Low power scan testing techniques and apparatus

ABSTRACT

Disclosed below are representative embodiments of methods, apparatus, and systems used to reduce power consumption during integrated circuit testing. Embodiments of the disclosed technology can be used to provide a low power test scheme and can be integrated with a variety of compression hardware architectures (e.g., an embedded deterministic test (“EDT”) architecture). Among the disclosed embodiments are integrated circuits having programmable test stimuli selectors, programmable scan enable circuits, programmable clock enable circuits, programmable shift enable circuits, and/or programmable reset enable circuits. Exemplary test pattern generation methods that can be used to generate test patterns for use with any of the disclosed embodiments are also disclosed.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a divisional of U.S. patent application Ser. No.12/069,752, filed on Feb. 12, 2008, now U.S. Pat. No. 7,925,465 entitled“Low Power Scan Testing Techniques And Apparatus” and naming Xijiang Linet al. as inventors, which prior application in turn claims the benefitof U.S. Provisional Patent Application No. 60/901,079, filed on Feb. 12,2007, both of which are incorporated herein by reference.

FIELD

This application relates generally to the field of testing integratedcircuits. In particular, this application relates to tools andtechniques that reduce power consumption during testing.

BACKGROUND

Design-for-testability (“DFT”) techniques based on scan and automatictest pattern generation (“ATPG”) are commonly used as part of integratedcircuit manufacturing to provide high test coverage. For large circuits,however, the volume of test data required to test such circuits cancause a significant increase in test time and tester memoryrequirements. In order to cope with these challenges, various test datareduction schemes have been introduced. Some test data reductionschemes, for example, use on-chip decompression and compressionhardware. By using such hardware, a tester can deliver test patterns ina compressed form, and the on-chip decompressor can expand (ordecompress) the compressed test patterns into the actual data loadedinto scan chains. The latter operation is possible because typicallyonly a small number of bits in the decompressed test patterns arespecified bits designed to target one or more specific faults in theintegrated circuit. The remaining unspecified bits of the decompressedtest pattern are termed “don't care” bits and are typically randomlydetermined as a result of the decompressor structure. The high number ofrandomly filled test pattern bits, however, can cause excessiveswitching in the scan cells of the scan chains as the decompressed testpattern is loaded. This, in turn, leads to undesirably high powerconsumption during the test procedure.

Similarly, the test responses that are captured after the test patternshave been loaded into the scan chains and launched into the system logicoften contain many test response bits that are not indicative of thepresence of any targeted fault. Because these test response bits do notcontribute to fault detection or diagnosis, such test response bits canbe termed “don't care” test response bits. As with the “don't care” testpattern bits, the “don't care” test response bits can also causeexcessive switching in the scan cells of the scan chains when the testresponse is captured and/or when the test response is shifted out of thescan chains.

The excessive power used during the scan chain loading, capturing,and/or unloading processes can result in overheating or supply voltagenoise—either of which can cause a device to malfunction, be permanentlydamaged, or exhibit reliability degradation due to acceleratedelectro-migration. Accordingly, improved methods and test architecturesfor reducing power consumption during testing are desired.

SUMMARY

Disclosed below are representative embodiments of methods, apparatus,and systems used to reduce power consumption during integrated circuittesting. Embodiments of the disclosed technology can be used to providea low power test scheme and can be integrated with a variety ofcompression hardware architectures (e.g., an embedded deterministic test(“EDT”) architecture).

Some of the disclosed embodiments include an integrated circuitcomprising a test stimulus selector. For example, in particularembodiments, the integrated circuit comprises a first test stimulussource configured to generate original test pattern values, a secondtest stimulus source configured to generate a constant value, acontroller configured to generate control signals, and a test stimulusselector having inputs coupled to the first test stimulus source, thesecond test stimulus source, and the controller. The test stimulusselector also has outputs coupled to a plurality of scan chains in theintegrated circuit. In these embodiments, the test stimulus selector isconfigured to selectively output either an original test pattern valuefrom the first test stimulus source or the constant value from thesecond test stimulus source at each of its respective outputs based onthe control signals from the controller. In particular embodiments, thetest stimulus selector is configured to selectively output values on acycle-by-cycle basis, a scan-chain-segment-by-scan-chain-segment basis,or a pattern-by-pattern basis. Furthermore, the first test stimulussource can be a decompressor configured to receive compressed testpattern values from an external tester. In some implementations, thetest stimulus selector comprises a plurality of multiplexers. Each ofthe multiplexers of these implementations has a first input coupled to arespective output of the first test stimulus source, a second inputcoupled to a respective output of the second stimulus source, a thirdinput coupled to a respective output of the controller, and an outputcoupled to a respective one or more of the scan chains. The controllercan be a programmable controller configured to load control data fromone of an external tester, a memory on the integrated circuit, or a testgenerator on the integrated circuit. In certain implementations, theconstant value is a first constant value, the integrated circuit furthercomprises a third test stimulus source configured to generate a secondconstant value, the test stimulus selector further has inputs coupled tothe third stimulus source, and the test stimulus selector is configuredto selectively output either an original test pattern value from thefirst test stimulus source, the first constant value from the secondtest stimulus source, or the second constant value from the third teststimulus source at each of its respective outputs based on the controlsignal from the controller. In these implementations, the first constantvalue and the second constant value can be 0 and 1, respectively, or 1and 0, respectively. Further, the test stimulus selector of theseimplementations can comprise a plurality of multiplexers, where each ofthe multiplexers has a first input coupled to a respective output of thefirst test stimulus source, a second input coupled to a respectiveoutput of the second stimulus source, a third input coupled to arespective output of the third stimulus source, a fourth input coupledto a respective output of the controller, and an output coupled to arespective one or more of the scan chains. For any of theseimplementations, the controller can comprise one or more shift registersfor loading and outputting control data. Further, the one or more shiftregisters can comprise a plurality of shift registers that form amulti-stage register pipeline. For instance, the plurality of shiftregisters can be configured to load data serially in response to aregister shift clock and/or the plurality of shift registers can beconfigured to shift in parallel control data from one of the shiftregisters to another of the shift registers in response to a pipelineshift clock. One or more shadow registers can also be coupled to the oneor more shift registers. Furthermore, the controller can comprise an XORor XNOR network coupled to at least one of the one or more shiftregisters, and the controller can further comprise a biasing circuitcoupled to the XOR or XNOR network. For instance, the biasing circuitcan be configured to bias one or more of the outputs of the XOR or XNORnetwork so that each of the biased outputs is more likely to produce arespective binary value. The biasing circuit can also be, for instance,a reconfigurable biasing circuit configured to bias one or more of theoutputs of the XOR or XNOR network by a selectable amount.

In other disclosed embodiments, an integrated circuit comprises a teststimulus source configured to generate original test pattern values, acontroller configured to generate control signals, and a test stimulusselector having inputs coupled to the test stimulus source and thecontroller and outputs coupled to a plurality of scan chains in theintegrated circuit. In these embodiments, the test stimulus selector isconfigured to selectively output either an original test pattern valuefrom the first test stimulus source or a constant value at each of itsrespective outputs based on the control signals received from thecontroller. Further, the test stimulus source can comprise gating logicconfigured to generate the constant value. In particular embodiments,the test stimulus selector is configured to selectively output values ona cycle-by-cycle basis, a scan-chain-segment-by-scan-chain-segmentbasis, or a pattern-by-pattern basis. In certain implementations, thetest stimulus source is a decompressor configured to receive compressedtest pattern values from an external tester. The controller can also bea programmable controller configured to load control data from one of anexternal tester, a memory on the integrated circuit, or a test generatoron the integrated circuit. The control can, in some implementations,comprise one or more shift registers for loading and outputting controldata. The one or more shift registers can comprise a plurality of shiftregisters that form a multi-stage register pipeline. The controller canfurther comprise an XOR or XNOR network coupled to at least one of theone or more shift registers. Additionally, the controller can comprise abiasing circuit coupled to the XOR or XNOR network. In suchimplementations, the biasing circuit can be configured to bias one ormore of the outputs of the XOR or XNOR network so that each of thebiased outputs is more likely to produce a respective binary value.

In one exemplary method disclosed herein, original test pattern valuesfor testing an integrated circuit are received on m paths. The originaltest pattern values can be received, for example, from a decompressor.In this exemplary method, the test pattern values on at least n of the mpaths are selectively modified, where n is less than m, so that the testpattern values on the n paths become at least two consecutive constantvalues. Test pattern values on m scan chain input paths are output.These test pattern values include the at least two consecutive constantvalues on n of the m scan chain input paths. In certain implementations,control data indicating which of the m paths are to be modified isreceived. The control data can be reused for multiple additional testpatterns. The outputted test pattern values can include all specifiedbits of the original test pattern that target one or more faults in theintegrated circuit. Further, the act of selectively modifying the testpattern values can comprise applying control signals to logic gatesconfigured to produce the at least two consecutive constant values.

Also disclosed herein are embodiments of integrated circuits havingexemplary scan enable circuits. For example, in particular embodiments,an integrated circuit comprises a decompressor coupled to data inputs ofscan chains in the integrated circuit, a controller configured togenerate control signals, and a scan enable circuit having an inputcoupled to the controller and outputs coupled to scan enable inputs ofscan cells of the scan chains. In these embodiments, the scan enablecircuit is configured to generate independently controllable scan enablesignals at one or more of the outputs of the scan enable circuit. Thevalues of the independently controllable scan enable signals are basedat least in part on the control signals from the controller. The valuesof the independently controllable scan enable signals can comprise afirst scan enable value and a second scan enable value. The first scanenable value can be used to cause one or more of the scan chains tooperate in a shift mode, and the second scan enable value can be used tocause the one or more of the scan chains to operate in a normal circuitmode. In some implementations, the input of the scan enable circuit is afirst input, and the scan enable circuit further comprises a secondinput configured to receive a global scan enable signal. In theseimplementations, the scan enable circuit can be configured so that atleast some of the scan enable signals generated by the scan enablecircuit are controlled in part by the global scan enable signal. Eachoutput of the scan enable circuit can be coupled to the scan enableinputs of the scan cells in a respective one or more of the scan chainsof the integrated circuit. Further, in certain implementations, theintegrated circuit can comprise a test stimulus selector having outputsthat are configured to be coupled to scan chains formed by the scancells. The test stimulus selector can be configured to selectivelyoutput either an original test pattern value or a constant value at eachrespective one of the outputs of the test stimulus selector. In someimplementations, the controller can be a programmable controllerconfigured to load control data from one of an external tester, a memoryon the integrated circuit, or a test generator on the integratedcircuit. The controller can comprise, for instance, one or more shiftregisters for loading and outputting control data. The one or more shiftregisters can comprise a plurality of shift registers that form amulti-stage register pipeline. Further, one or more shadow registers canbe coupled to the one or more shift registers. The controller can alsocomprise, in some implementations, an XOR or XNOR network coupled to atleast one of the one or more shift registers. Furthermore, thecontroller can comprise a biasing circuit coupled to the XOR or XNORnetwork. The biasing circuit can be configured to bias one or more ofthe outputs of the XOR or XNOR network so that each of the biasedoutputs is more likely to produce a respective binary value.

Exemplary embodiments for applying scan enable signals to a circuitduring testing are also disclosed herein. For instance, in someembodiments, a scan enable signal is applied to scan chains of acircuit-under-test as a decompressed test pattern from a decompressor isloaded into the scan chains. The scan enable signal causes the scanchains to operate as one or more shift registers. Further, the scanenable signal is applied to one or more of the scan chains as a testresponse to the decompressed test pattern is captured in a remainder ofthe scan chains to which the scan enable signal is not applied. In someimplementations, the one or more of the scan chains to which the scanenable signal is applied comprise one or more scan chains that wouldotherwise capture unknown values. In further implementations, the scanenable signal can be applied to the scan chains of thecircuit-under-test as the test response is unloaded from the scanchains. Control signals can also be received that control which of thescan chains will have the scan enable signal applied as the testresponse to the decompressed test pattern is captured. These controlsignals can be reused as multiple additional decompressed test patternsare loaded into the scan chains. Still further, the control signals fora next test pattern can be loaded as the test pattern is being loadedinto the scan chains.

In another exemplary embodiment disclosed herein, one or morecomputer-readable media storing computer-executable instruction forcausing a computer to perform a method are disclosed. In certainimplementations, the method comprises simulating a test pattern beingapplied to a circuit-under-test and thereby producing a simulated testresponse, identifying one or more scan chains of the circuit-under-testthat capture unknown states from the simulated test response, generatingcontrol signals for causing a scan enable circuit to suppress scanenable signals at the one or more identified scan chains during acapture window, and storing the control signals on one or morecomputer-readable media.

Also disclosed herein are embodiments of integrated circuits comprisingclock enable circuits. For example, in certain disclosed embodiments, anintegrated circuit comprises a decompressor coupled to data inputs ofscan chains in the integrated circuit, a controller configured togenerate control signals, and a clock enable circuit. The clock enablecircuit of these embodiments has inputs coupled to the controller andoutputs coupled to clock inputs of scan cells of the scan chains.Further, the clock enable circuit is configured to generateindependently controllable clock signals at one or more of the outputsof the clock enable circuit based at least in part on the controlsignals from the controller. The independently controllable clocksignals generated by the clock enable circuit can be capture clocksignals. Further, in some implementations, the inputs of the clockenable circuit can be first inputs, the clock enable circuit can furthercomprise a second input configured to receive a source clock signal, andthe clock signals generated by the clock enable circuit can be derivedfrom the source clock signal. In certain implementations, the clockenable circuit further comprises a third input configured to receive aglobal clock enable signal, and the clock enable circuit is configuredto generate clock signals at all of the outputs of the clock enablecircuit when the global clock enable signal is activated. Each output ofthe clock enable circuit can be coupled to the clock inputs of the scancells in a respective one or more of the scan chains of the integratedcircuit. The clock enable circuit can comprise individual clock enablercircuits for controlling each respective output of the clock enablecircuit. In certain implementations, the integrated circuit furthercomprises a test stimulus selector having outputs that are configured tobe coupled to scan chains formed by the scan cells. The test stimulusselector can be configured to selectively output either an original testpattern value or a constant value at each respective one of the outputsof the test stimulus selector. Further, the controller can be aprogrammable controller configured to load control data from one of anexternal tester, a memory on the integrated circuit, or a test generatoron the integrated circuit. The controller can comprise, for example, oneor more shift registers for loading and outputting control data. The oneor more shift registers can comprise a plurality of shift registers thatform a multi-stage register pipeline. Further, one or more shadowregisters can be coupled to the one or more shift registers. Thecontroller can also comprise an XOR or XNOR network coupled to at leastone of the one or more shift registers. In certain implementations, thecontroller further comprises a biasing circuit coupled to the XOR orXNOR network, the biasing circuit being configured to bias one or moreof the outputs of the XOR or XNOR network so that each of the biasedoutputs is more likely to produce a respective binary value.

Among the disclosed embodiments are methods for applying and suppressingclock signals during testing. For example, in certain disclosedembodiments, a clock signal is applied to scan chains of acircuit-under-test as a decompressed test pattern from a decompressor isloaded into the scan chains of the circuit-under-test. The clock signalis suppressed to one or more but not all of the scan chains or segmentsof the scan chains as a test response to the decompressed test patternis captured during a capture window. The suppression of the clock signalcauses the one or more but not all of the scan chains or segments of thescan chains to remain in a constant state during the capture window. Theone or more but not all of the scan chains or segments of the scanchains can comprise one or more scan chains or segments of the scanchains that would otherwise capture unknown values. In particularimplementations, the clock signal has a first frequency as the testpattern is loaded into the scan chains and a second frequency as thetest response is captured in the capture window. The disclosedembodiments can further comprise applying the clock signal to the scanchains of the circuit-under-test as the test response is unloaded fromthe scan chains. Furthermore, control signals can be received thatcontrol which scan chains or segments of the scan chains will have theclock signal suppressed during the capture window. The control signalscan be reused as test responses to multiple additional decompressed testpatterns are captured. The control signals for a next test pattern canalso be loaded as the test pattern is being loaded into the scan chains.

In another exemplary embodiment disclosed herein, one or morecomputer-readable media storing computer-executable instruction forcausing a computer to perform a method are disclosed. In certainimplementations, the method comprises simulating a test pattern beingapplied to a circuit-under-test and thereby producing a simulated testresponse, identifying one or more scan chains of the circuit-under-testthat capture unknown states from the simulated test response, generatingcontrol signals for causing a clock enable circuit to suppress thecapture clock at the one or more identified scan chains during a capturewindow, and storing the control signals on one or more computer-readablemedia.

Also disclosed herein are embodiments of integrated circuits comprisingreset enable circuits. For example, in some embodiments, an integratedcircuit comprises a decompressor coupled to data inputs of scan chainsin the integrated circuit, a controller configured to generate controlsignals, and a reset enable circuit having inputs coupled to thecontroller and outputs that are coupled to reset inputs of scan cells ofthe scan chains. The reset enable circuit can be configured toselectively generate a reset signal at one or more of the outputs of thereset enable circuit based at least in part on the control signals fromthe controller. The scan cells in the integrated circuit can beconfigured to be reset to 0 or 1 when the reset signal is applied to thereset inputs. The inputs of the reset enable circuit can be first inputsof the reset enable circuit, and the reset enable circuit can furthercomprise a second input configured to receive a source reset signal. Inparticular implementations, the reset enable circuit comprisesindividual reset enabler circuits for controlling each respective outputof the reset enable circuit. Furthermore, in some implementations, eachoutput of the reset enable circuit can be coupled to the reset inputs ofthe scan cells in a respective one or more of the scan chains of theintegrated circuit. The reset inputs of the scan cells can compriseasynchronous control pins of the scan cells. The integrated circuit canfurther comprise a shift clock enable circuit having outputs that arecoupled to shift clock inputs of scan chains in the integrated circuit.The shift clock enable circuit of these embodiments can be configured toselectively generate a shift clock signal at one or more of the outputsof the shift clock enable circuit. The shift clock enable circuit canfurther comprise inputs coupled to the controller, and the shift clocksignals that are selectively generated can be based at least in part onthe control signals from the controller. Further, the shift clock enablecircuit can comprise individual shift clock enabler circuits forcontrolling each respective output of the shift clock enable circuit.The integrated circuit can also comprise a test stimulus selector havingoutputs that are configured to be coupled to scan chains formed by thescan cells. The test stimulus selector can be configured to selectivelyoutput either an original test pattern value or a constant value at eachrespective one of the outputs of the test stimulus selector. In certainimplementations, the controller in the integrated circuit is aprogrammable controller configured to load control data from one of anexternal tester, a memory on the integrated circuit, or a test generatoron the integrated circuit. The controller can comprise one or more shiftregisters for loading and outputting control data. Further, the one ormore shift registers can comprise a plurality of shift registers thatform a multi-stage register pipeline. One or more shadow registers canbe coupled to the one or more shift registers. The controller canfurther comprise an XOR or XNOR network coupled to at least one of theone or more shift registers. Still further, the controller can comprisea biasing circuit coupled to the XOR or XNOR network. The biasingcircuit can be configured to bias one or more of the outputs of the XORor XNOR network so that each of the biased outputs is more likely toproduce a respective binary value.

Exemplary embodiments for applying reset signals to a circuit duringtesting are also disclosed herein. In certain disclosed embodiments, atest response to a test pattern (e.g., a test pattern decompressed by adecompressor) is captured in scan chains of a circuit-under-test. Areset signal is applied to one or more but not all of the scan chains orsegments of the scan chains after the test response to the test patternis captured. The contents of the scan chains are unloaded after thereset signal is applied. The one or more scan chains or segments of thescan chains to which the reset signal is applied can comprise one ormore scan chains or segments of the scan chains that would otherwisecapture unknown values. The application of the reset signal can causevalues captured into the one or more but not all of the scan chains orsegments of the scan chains to become a single constant value (e.g., a 1or 0). Control signals can be received that control which scan chains orsegments of the scan chains will have the reset signal applied. Thesecontrol signals can be reused for test responses to multiple additionaltest patterns. Further, control signals for a next test pattern can beloaded as the test pattern is being loaded into the scan chains.

In another exemplary embodiment disclosed herein, one or morecomputer-readable media storing computer-executable instruction forcausing a computer to perform a method are disclosed. In certainimplementations, the method comprises simulating a test pattern beingapplied to a circuit-under-test and thereby producing a simulated testresponse, identifying one or more scan chains of the circuit-under-testthat capture unknown states from the simulated test response, generatingcontrol signals for causing a reset enable circuit to generate resetsignals at the one or more identified scan chains, and storing thecontrol signals on one or more computer-readable media.

Among the various embodiments disclosed herein are test patterngeneration methods. These methods can be implemented, for instance, inone or more computer-readable media storing computer-executableinstructions for causing a computer to perform a method. In someembodiments, a number of scan chains to be driven by an original teststimulus source is determined. The number is typically less than thenumber of available scan chains in a circuit design. A fault from atarget fault list is selected. A test cube for the selected fault isgenerated. The test cube can comprise specified bits in a number ofspecified scan chains. A determination is made as to whether the numberof specified scan chains in the test cube is less than the number ofscan chains to be driven by the original test stimulus source. If thenumber of specified scan chains in the test cube does not exceed thenumber of scan chains to be driven by the original test stimulus source,the test cube is stored. In certain implementations, the fault is afirst fault and the test cube is rejected if the number of specifiedscan chains in the test cube exceeds the number of scan chains to bedriven by the original test stimulus. The acts of selecting, generating,determining, and storing can then be repeated for a second fault fromthe target fault list. In some implementations, the fault is a firstfault, and a second fault is selected from the target fault list. Thetest cube for the first fault can be expanded to include one or moreadditional specified bits for detecting the second fault. Adetermination can be made as to whether the one or more additionalspecified bits causes the number of specified scan chains in theexpanded test cube to exceed the number of scan chains to be driven bythe original test stimulus source. If the number of specified scanchains in the expanded test cube does not exceed the number of scanchains to be driven by the original test stimulus source, the expandedtest cube can be stored. If the number of specified scan chains in theexpanded test cube exceeds the number of scan chains to be driven by theoriginal test stimulus source, the expanded test cube can be rejectedand the acts of selecting, expanding, determining, and storing repeatedfor a third fault from the target fault list. In some implementations,the encoding capacity of a controller for a test stimulus selector isdetermined in order to determine the number of scan chains to be drivenby an original test stimulus source. Further, the number of scan chainsto be driven by the original test stimulus source can be based on themaximum number of scan chains that can be individually controlled by atest stimulus selector. In certain implementations, the original teststimulus source is a decompressor configured to decompress compressedtest patterns provided by an external tester. In some implementations,control signals for a test stimulus selector can be generated based onthe test cube. These control signals can be capable of causing the teststimulus selector to apply constant values to the unspecified scanchains as a test pattern with the test cube is loaded during testing.

In other exemplary test pattern generation methods, a number of scanchains usable to observe fault effects is determined. The number istypically less than the number of available scan chains in a circuitdesign. A fault from a target fault list is selected. A test cube forthe selected fault is generated. The number of scan chains used toobserve fault effects from the test cube is determined. An evaluation ismade as to whether the number of scan chains used to observe faulteffects from the test cube is less than the number of scan chains usableto observe fault effects. If the number of scan chains used to observefault effects from the test cube is less than the number of scan chainsusable to observe fault effects, the test cube is stored. In certainimplementations, the fault is a first fault, and the test cube isrejected if the number of scan chains used to observe fault effects fromthe test cube exceeds the number of scan chains usable to observe faulteffects. The acts of selecting, generating, determining, evaluating, andstoring can be performed for a second fault from the target fault list.In other implementations, the fault from the target fault list is afirst fault from the target fault list, and a second fault from thetarget fault list is selected. The test cube for the first fault isexpanded to include one or more additional specified bits for detectingthe second fault. A determination is made as to whether the one or moreadditional specified bits cause the number of scan chains used toobserve fault effects from the expanded test cube to exceed the numberof scan chains usable to observe fault effects. If the number of scanchains used to observe fault effects from the test cube is less than thenumber of scan chains usable to observe fault effects, the expanded testcube is stored. If the number of scan chains used to observe faulteffects from the test cube exceeds the number of scan chains usable toobserve fault effects, the expanded test cube can be rejected. The actsof selecting, expanding, determining, and storing can be repeated for athird fault from the target fault list. In certain implementations, theencoding capacity for a controller of a scan enable circuit, acontroller of a clock enable circuit, a controller of a reset enablecircuit, or a controller of a shift clock enable circuit can bedetermined in order to determine the number of scan chains usable toobserve fault effects. The number of scan chains used to observe faulteffects from the test cube can be determined by simulating applicationof the test cube to a circuit-under-test. In certain implementations,the original test stimulus source is a decompressor configured todecompress compressed test patterns provided by an external tester. Insome implementations, control signals for a scan enable circuit can begenerated based on the test cube. These control signals can be capableof causing the scan enable circuit to suppress scan enable signals fromscan chains that do not observe fault effects from the test cube when atest pattern with the test cube is applied during testing. In otherimplementations, control signals for a clock enable circuit can begenerated based on the test cube. These control signals can be capableof causing the clock enable circuit to suppress clock signals from scanchains that do not observe fault effects from the test cube when a testpattern with the test cube is applied during testing. In furtherimplementations, control signals can be generated for a reset enablecircuit based on the test cube. These control signals can be capable ofcausing the reset enable circuit to apply reset signals to scan chainsthat do not observe fault effects from the test cube after a testresponse to a test pattern with the test cube is captured duringtesting. In other implementations, control signals for a shift clockenable circuit can be generated based on the test cube. These controlsignals can be capable of causing the shift clock enable circuit tosuppress shift clock signals from scan chains that do not observe faulteffects from the test cube after a test response to a test pattern withthe test cube is captured during testing. In certain implementations, anumber of scan chains to be driven by an original test stimulus sourceis also determined. In these implementations, the number of scan chainsto be driven by the original test stimulus source is based on themaximum number of scan chains that can be independently controlled by ascan enable circuit, a clock enable circuit, a reset enable circuit, ora shift clock enable circuit.

Any of the disclosed embodiments can be performed in a variety ofenvironments, including a simulation environment. Further, any of thedisclosed methods can be implemented on one or more computer-readablemedia storing computer-executable instructions for causing a computer toperform any of the methods. Any of the disclosed methods implemented ina computer environment can be performed by a single computer or via anetwork. Further, computer-readable media storing test patterns, testpattern values, or control data (or any other final or intermediateresults) produced by any of the disclosed methods are also disclosed.Additionally, any of the disclosed apparatus can be generated by asuitable electronic design automation (“EDA”) software tool and storedas design data on one or more computer-readable media. For example, anyof the disclosed testing architectures can be described or representedin an HDL file (such as a Verilog, VHDL, or register-transfer levelfile), a gate-level netlist, or other such EDA design file (e.g., aGDSII file or Oasis file).

The foregoing and other objects, features, and advantages of theinvention will become more apparent from the following detaileddescription, which proceeds with reference to the accompanying figures.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a schematic block diagram illustrating an exemplary testingenvironment in which embodiments of the disclosed technology can beused.

FIGS. 2( a)-2(d) are graphs showing the distributions of the number ofscan chains having specified bits for primary target transition faultsin exemplary test circuits.

FIGS. 3( a)-3(d) are graphs showing the distribution of scan chains withspecified bits after dynamic compaction for the exemplary test circuits.

FIG. 4 is a graph showing the pattern count increase for a testgeneration scheme with a restricted number of scan chains havingspecified bits as compared to a test generation scheme that has norestrictions for the exemplary test circuits.

FIGS. 5( a)-5(d) are graphs showing the number of scan chains observingadditional detected faults for the exemplary test circuits.

FIG. 6 is a schematic block diagram of a first exemplary embodiment ofan integrated circuit comprising a programmable test stimulus selector.

FIG. 7 is a schematic block diagram of a second exemplary embodiment ofan integrated circuit comprising a programmable test stimulus selector.

FIG. 8 is a schematic block diagram of an exemplary selector circuit asmay be used in the embodiments of FIG. 6 or FIG. 7.

FIGS. 9( a)-9(c) are schematic block diagrams of exemplary selectorcircuits as may be used in the embodiments of FIG. 6 or FIG. 7.

FIG. 10 is a schematic block diagram of an exemplary programmablecontroller as can be used in the embodiments of FIG. 6 or FIG. 7.

FIG. 11 is a schematic block diagram of an exemplary shift register fileas may be used in the controller of FIG. 10.

FIG. 12 is a schematic block diagram of an exemplary clocking circuitfor the shift register file of FIG. 11.

FIG. 13 is a schematic block diagram of an exemplary shift register fileusing a shadow register as may be used in the controller of FIG. 10.

FIGS. 14( a)-14(b) are schematic block diagrams of exemplary biasingcircuits as can be used in the controller of FIG. 10.

FIG. 15 is a schematic block diagram of an exemplary reconfigurablebiasing circuit as can be used in the controller of FIG. 10.

FIG. 16 is a schematic block diagram of another exemplary reconfigurablebiasing circuit as can be used in the controller of FIG. 10.

FIG. 17 is a schematic block diagram of an exemplary circuit having atest stimulus controller with a biasing circuit.

FIG. 18 is a schematic block diagram of a first exemplary embodiment ofan integrated circuit comprising a programmable scan enable circuit.

FIG. 19 is a schematic block diagram of an exemplary programmable scanenable circuit as can be used in the integrated circuit of FIG. 18.

FIG. 20 is a schematic block diagram of a scan enable circuit as can beused in the embodiment of FIG. 19.

FIG. 21 is a schematic block diagram of a second exemplary embodiment ofan integrated circuit comprising a programmable scan enable circuit.This embodiment further comprises a programmable test stimulus selector.

FIG. 22 is a schematic block diagram of an exemplary circuit having aprogrammable scan enable circuit and a programmable test stimulusselector with a biasing circuit.

FIG. 23 is a schematic block diagram of an exemplary circuit having aprogrammable scan enable circuit with a biasing circuit.

FIG. 24 is a schematic block diagram of a first exemplary embodiment ofan integrated circuit comprising a programmable clock enable circuit.

FIG. 25 is a schematic block diagram of an exemplary programmable clockenable circuit as can be used in the integrated circuit of FIG. 24.

FIGS. 26( a)-26(b) are schematic block diagrams showing exemplaryconfigurations for coupling outputs of clock enable circuits to scanchains as can be used in the embodiment of FIG. 25.

FIG. 27 is a schematic block diagram of an exemplary clock enablecircuit as can be used in the embodiment of FIG. 25.

FIGS. 28( a)-28(b) are schematic block diagrams of exemplary clockenable circuits as can be used in the embodiments of FIG. 25.

FIG. 29 is a schematic block diagram of an exemplary circuit having aprogrammable clock enable circuit and a programmable test stimulusselector.

FIG. 30 is a schematic block diagram of an exemplary circuit having aprogrammable clock enable circuit and a programmable test stimuliselector with a biasing circuit.

FIG. 31 is a schematic block diagram of an exemplary circuit having aprogrammable clock enable circuit with a biasing circuit.

FIG. 32 is a schematic block diagram of a first exemplary embodiment ofan integrated circuit comprising a programmable reset/shift clockcircuit.

FIG. 33 is a schematic block diagram of an exemplary shift clock enablecircuit as can be used in the integrated circuit of FIG. 32.

FIG. 34 is a schematic block diagram of an exemplary reset clock enablecircuit as can be used in the integrated circuit of FIG. 32.

FIG. 35 is a schematic block diagram of an exemplary circuit having aprogrammable clock enable circuit, a programmable test stimulusselector, and a programmable shift/reset clock enable circuit.

FIG. 36 is a schematic block diagram of an exemplary circuit having aprogrammable test stimuli selector with a biasing circuit and used toanalyze embodiments of the disclosed technology.

FIG. 37 is a schematic block diagram a first distributed computingnetwork as can be used to perform or implement any of the disclosedembodiments.

FIG. 38 is a schematic block diagram a second distributed computingnetwork as can be used to perform or implement any of the disclosedembodiments.

FIG. 39 is a flowchart showing an exemplary method for performing orimplementing any of the disclosed embodiments using a distributedcomputer network (such as the networks of FIGS. 37 and 38).

FIG. 40 is a flowchart of an exemplary method for selectively modifyingtest pattern values to be loaded into scan chains of an integratedcircuit.

FIG. 41 is a flowchart of an exemplary method for selectively applying ascan enable signal as a test response is captured during testing.

FIG. 42 is a flowchart of an exemplary method for selectivelysuppressing clock signals as a test response is captured during testing.

FIG. 43 is a flowchart of an exemplary method for selectively applying areset signal to scan chains after a test response is captured duringtesting.

FIG. 44 is a flowchart of an exemplary test pattern generation methodfor generating test cubes where the number of scan chain to be driven bya test stimulus source is restricted.

FIG. 45 is a flowchart of an exemplary test pattern generation methodfor generating test cubes where the number of scan chains that observefault effects during testing is to be restricted.

DETAILED DESCRIPTION

I. General Considerations

The disclosed methods, apparatus, and systems should not be construed aslimiting in any way. Instead, the present disclosure is directed towardall novel and nonobvious features and aspects of the various disclosedmethods, apparatus, systems, and equivalents thereof, alone and invarious combinations and subcombinations with one another. The presentdisclosure is not limited to any specific aspect or feature, orcombination thereof, nor do the disclosed methods, apparatus, andsystems require that any one or more specific advantages be present orproblems be solved.

Although the operations of some of the disclosed methods, apparatus, andsystems are described in a particular, sequential order for convenientpresentation, it should be understood that this manner of descriptionencompasses rearrangement, unless a particular ordering is required byspecific language set forth below. For example, operations describedsequentially may in some cases be rearranged or performed concurrently.Moreover, for the sake of simplicity, the attached figures may not showthe various ways in which the disclosed methods, apparatus, and systemscan be used in conjunction with other methods, apparatus, and systems.Additionally, the description sometimes uses terms like “evaluate” and“determine” to describe the disclosed methods. These terms arehigh-level abstractions of the actual operations that are performed. Theactual operations that correspond to these terms may vary depending onthe particular implementation and are readily discernible by one ofordinary skill in the art.

The disclosed apparatus can be implemented in a wide variety ofscan-based or partially-scan-based circuits (e.g., application-specificintegrated circuits (“ASICs”) (including mixed-signal ASICs),systems-on-a-chip (“SoCs”), or programmable logic devices (“PLDs”), suchas field programmable gate arrays (“FPGAs”)). Such circuits can be usedin a vast assortment of electronic devices, ranging from portableelectronics (e.g., cell phones, media players, and the like) tolarger-scale items (e.g., computers, control systems, airplanes,automobiles, factories, and the like). All such items comprising one ormore circuits having embodiments of the disclosed testing apparatus areconsidered to be within the scope of this disclosure.

Any of the disclosed apparatus can be described or represented as designdata or design information stored on one or more computer-readablemedia. For example, any of the disclosed testing architectures can bedescribed or represented in an HDL file (such as a Verilog, VHDL, orregister-transfer level file), a gate-level netlist, or other such EDAdesign file (e.g., a GDSII file or Oasis file). Such design data ordesign information can be created in whole or in part through the use ofsoftware comprising computer-executable instructions stored oncomputer-readable media (e.g., computer-readable media, such as one ormore CDs, volatile memory components (such as DRAM or SRAM), ornonvolatile memory components (such as hard drives)). Any of thedisclosed techniques can also be implemented in whole or in part bysoftware comprising computer-executable instructions stored oncomputer-readable media. Such software can comprise, for example, anappropriate electronic design automation (“EDA”) software tool (e.g., anautomatic test pattern generation (“ATPG”) tool).

Such software can be executed on a single computer or on a networkedcomputer (e.g., via the Internet, a wide-area network, a local-areanetwork, a client-server network, or other such network). For clarity,only certain selected aspects of the software-based implementations aredescribed. Other details that are well known in the art are omitted. Forexample, it should be understood that the disclosed technology is notlimited to any specific computer language, program, or computer. Forexample, the disclosed technology can be implemented using anycommercially available computer executing a program written in anycommercially available or otherwise suitable language. Any of thedisclosed methods can alternatively be implemented (partially orcompletely) in hardware (e.g., an ASIC, PLD, or SoC).

Any data produced from any of the disclosed methods (e.g., intermediateor final test patterns, test patterns values, or control data) can bestored on computer-readable media (e.g., tangible computer-readablemedia, such as one or more CDs, volatile memory components (such as DRAMor SRAM), or nonvolatile memory components (such as hard drives)) usinga variety of different data structures or formats. Such data can becreated, updated, or stored using a local computer or over a network(e.g., by a server computer).

Any of the disclosed methods can also be performed in a computersimulation or other EDA environment (e.g., in a simulation environmentwhere test patterns are simulated as being applied to representations ofcircuits). For example, the disclosed methods can be performed usingcircuit design information representative of a circuit-under-test andthe associated test hardware (for example, a netlist, HDL file (such asa Verilog, or VHDL file), RTL file, GDSII file, Oasis file, or the like)and stored on computer-readable media. For presentation purposes,however, the present disclosure sometimes refers to thecircuit-under-test (including the various components of thecircuit-under-test) and the associated testing hardware (including thevarious components of the hardware) by their physical counterparts (forexample, scan chains, scan cells, shift register, shadow register, andother such terms). It should be understood, however, that any suchreference in the detailed description or claims not only includes thephysical components but also includes representations of such componentsas are used in simulation, automatic test pattern generation, or othersuch EDA environments.

As used in this disclosure, the singular forms “a,” “an,” and “the”include the plural forms unless the context clearly dictates otherwise.Additionally, the term “includes” means “comprises.” Moreover, unlessthe context dictates otherwise, the term “coupled” means electrically orelectromagnetically connected or linked and includes both directconnections or direct links and indirect connections or indirect linksthrough one or more intermediate elements not affecting the intendedoperation of the circuit.

Furthermore, as used herein, the term “test stimulus source” refers to atest stimulus generator that provides test stimuli directly orindirectly to scan chains and primary inputs. The test stimulusgenerator be can implemented in various forms. Such forms include, butare not limited to, external test equipment, weighted or non-weightedpseudo random pattern generators (“PRPGs”), PRPGs with phase shifterand/or biasing circuit, decompressors, sources producing a constantlogic value 0, and sources producing a constant logic value 1.

The term “decompressor” refers to a functional unit that decompressescompressed test stimuli, such as deterministic test stimuli fromexternal test equipment, for delivery to a circuit-under-test on thechip. A decompressor can be implemented in various forms. Such forms caninclude, but are not restricted to, broadcast circuits, selectablebroadcast circuits, combinational circuits (including, but not limitedto, MUX-based or XOR-based combinational circuits) with or withoutbiasing circuits, feedback shift registers with or without phaseshifters and/or biasing logic, and/or a feedback shift registers withreseeding.

The term “test stimulus selector” refers to a functional unit thatselects at least one test stimulus source (e.g., from a plurality ofsuch sources) that feeds scan chain inputs.

The term “programmable test stimulus selector” refers to a functionalunit that can comprise, for example, two components: a programmablecontroller and a test stimulus selector. The programmable controllercan, for example, be coupled to external test equipment or to anembedded test generator and configured to receive control data from theexternal tester or from the embedded test generator.

The term “scan chain segment” refers to a group of scan cells in a scanchain that are connected consecutively.

The term “scan enabler” or “scan enable circuit” refers to a functionalunit that configures the scan chains in a shift mode or a functionalcapture mode (sometimes referred to as the “normal circuit” mode) duringa capture window.

The term “programmable scan enabler” or “programmable scan enablecircuit” refers to a functional unit that can comprise, for example, twocomponents: a programmable controller and a scan enable circuit. Theprogrammable controller can be coupled to external test equipment or toan embedded test generator and be configured to receive control datafrom the external tester or from the embedded test generator.

The term “clock enabler” or “clock enable circuit” refers to afunctional unit that enables/disables a set of state elements to capturea system response in the capture window.

The term “programmable clock enabler” or “programmable clock enablecircuit” refers to a functional unit that can comprise, for example, twocomponents: a programmable controller and a clock enable circuit. Theprogrammable controller can be coupled to external test equipment or toan embedded test generator and be configured to receive control datafrom the external tester or from the embedded test generator.

The term “shift clock enabler” or “shift clock enable circuit” refers toa functional unit that enables/disables a group of scan chains toload/unload test data during scan shift.

The term “reset enabler” or “reset enable circuit” refers to afunctional unit that enables/disables a reset clock or reset signal thatresets the scan cells in a scan chain.

The term “programmable reset/shift enabler” refers to a functional unitthat can comprise, for example, three components: a programmablecontroller, a shift clock enable circuit, and a reset enable circuit.The programmable controller can be coupled to external test equipment orto an embedded test generator and be configured to receive control datafrom the external tester or from the embedded test generator.

It should be noted that these particular term usages should not beconstrued as limiting, as the terms may encompass additional featuresunderstood by those of ordinary skill in the art or indicated by thecontext of how the term is used.

II. Low-Power Testing, Generally

The technology disclosed herein relates to methods and apparatus forlow-power testing. The disclosed technology is sometimes discussed inthe context of an embedded deterministic test (“EDT”) environment,though it should be understood that the principles described herein arenot limited to this environment. For example, the low-power testingtechniques and apparatus described herein can be used with othercompression schemes that involve encoding test cubes having specifiedbits or with testing schemes that do not use compression hardware.

FIG. 1 illustrates an exemplary testing environment 100 in whichcompressed test stimuli 112 are delivered to a decompressor 118 embeddedin a circuit-under-test 110. The illustrated embodiment shows a typicalEDT environment in which the compressed test stimuli are provided byautomatic test equipment (“ATE”) 114 external to the circuit-under-test110. The test stimuli are decompressed and applied as test patterns toscan chains 120. Outputs from the scan chains are compacted by acompactor 122 and delivered as compressed test responses 124 to the ATE114 for analysis. Examples of EDT decompressors 118 and exemplary EDTenvironments that are suitable for use with the disclosed technology aredescribed in, for example, U.S. Pat. Nos. 6,327,687; 6,353,842;6,557,129; 6,684,358; 6,874,109; and U.S. Patent Application PublicationNo. 2003/0120988, all of which are hereby incorporated herein byreference.

Deterministic test vectors typically have only a small fraction of bitsthat are specified. The remaining positions can be either randomlyfilled with 0s and 1s, or they can be filled in other ways, oftenwithout compromising test coverage. Furthermore, a substantial amount ofexperimental evidence indicates that, very often, the locations ofspecified bits are confined to only a few scan chains. In order toillustrate this phenomenon, consider data collected from four industrialdesigns using EDT technology. The characteristics of these exemplarydesigns are reported in Table 1. FIGS. 2( a)-2(d) are graphs 200, 202,204, 206, and show the distributions of the number of scan chains havingspecified bits for all primary target transition faults in the circuitsC1-C4. Note that the number of scan chains with specified bits iscounted before dynamic compaction. As can be seen, the majority of testcubes feature specified bits in less than 20% of the scan chains, and notest cube has specified bits in more than 50% of the scan chains.

TABLE 1 Characteristics of the Circuits Considered # of scan # of scan #of scan # of transition Circuit cells chains channels # of gates faultsC1  45.4K 100 1 0.89M  2.0M C2 156.1K 128 8 2.4M 6.0M C3 142.9K 1200 242.5M 6.1M C4 321.5K 320 32 5.5M 9.6M

Dynamic compaction is typically used to reduce the pattern count duringtest generation. Starting from a test cube generated for a primarytarget fault, dynamic compaction expands this cube to cover additionalfaults by assigning appropriate values to the unspecified positions. Asa result, the number of scan chains having specified bits graduallyincreases as dynamic compaction progresses. To employ scan chains thathave no specified bits and that can be used to reduce toggling duringtest application, one desirably maximizes the number of such scan chainswhile minimizing the possible impact on the pattern count during dynamiccompaction. To analyze the correlation between the pattern count and thenumber of scan chains with specified bits during test generation withdynamic compaction, one can limit the number of scan chains withspecified bits. For instance, according to one exemplary embodiment,dynamic compaction can be carried out only if a test cube has less thana specified quantity (e.g., 20%) of scan chains with specified bits;and, among the scan chains with no specified bits, some specifiedquantity (e.g., 50%) of the total number of scan chains can be chosenrandomly, and the scan cells in those scan chains can be filled with aconstant value. For the rest of the unspecified bits, their logic valuescan be determined by the decompressor.

The distribution of scan chains with specified bits after dynamiccompaction for the circuits C1-C4 is shown in graphs 300, 302, 303, 304of FIGS. 3( a)-3(d). As can be seen, the majority of test cubes havespecified bits in less than 20% of the scan chains. Furthermore, the useof the exemplary technique limiting dynamic compaction to situationswhere the number of scan chains with specified bits is low (e.g., 20%)has only a moderate impact on the pattern count. For instance, graph 400in FIG. 4 shows the pattern count increase as compared to a testgeneration scheme that has no restrictions as far as scan chains hostingspecified bits are concerned for the circuits C1-C4. For graph 400, aconventional EDT environment (e.g., as shown in FIG. 1) was used as anexperimental platform. Moreover, there was no fault coverage lossreported due to the new test generation technique.

One can take advantage of the above observations by feeding the scanchains with specified bits directly from a test data decompressor whilereplacing “don't care” bits in the remaining chains with a constantvalue. Such an approach can significantly reduce the number oftransitions during scan-in shifting, as shown in the following sections.

Besides reducing the switching activity from the test stimulus point ofview, it is also possible to analyze the number of scan chains used toobserve fault effects for the faults not detected by the previouslyapplied test patterns. The distribution of the number of scan chainsobserving additional detected faults for the circuit C1-C4 is shown ingraphs 500, 502, 504, 506 of FIGS. 5( a)-5(d). The test patterns appliedin these examples were generated with 50% of the total number of scanchains driven by a decompressor while the remaining scan chains weredriven by a constant 0. All the scan chains in this example were used asobservation points during fault simulation. As can be seen, the majorityof scan chains did not observe additional detected faults. One can takeadvantage of this observation to reduce the switching activity for boththe scan shift phase and the capture phase of testing by preventing newdata/different data from being captured into the scan cells during thecapture phase. Whenever possible, it is also desirable to reduce theimpact of unknown values on test response compaction. Exemplarytechniques for achieving one or more of these objectives are introducedin the following sections. The technology described below furtherincludes exemplary hardware architectures for performing the describedtechniques. Although particular representative implementations of thehardware architectures are shown, various other alternative arrangementsbased on the described principles are also possible (e.g., usingalternative logic or arrangements of logic that achieve substantiallythe same functionality). All such alternative arrangements and theirequivalents are considered to be within the scope of this disclosure.

III. Low-Power Loading Operations

Scan architectures typically have a single test stimulus source.Therefore, the embodiments disclosed below include only a singleoriginal test stimulus source. The low-power techniques described,however, can be readily extended to other scan-based architectureshaving multiple test stimulus sources.

A. Exemplary Architectures of Programmable Test Stimulus Selectors

To reduce switching activity during scan shifting, and thereby reducepower consumption, one or more programmable selectors can be logicallypositioned between a test stimulus source and scan chain inputs. FIG. 6is a schematic block diagram illustrating a generalized version of aprogrammable selector 650 that is positioned between test stimulussources 610 (comprising an original stimulus source, a weighted circuitcoupled to the original stimulus source, a logic 0 source, and a logic 1source) and scan chain inputs 122 a, 122 b, 122N of scan chains 120 a,122 b, 122N.

The exemplary programmable selector 650 can comprise one or more teststimulus selectors 652 and one or more programmable controllers 660. Asingle test stimulus selector can be coupled, for example, to more thanone scan chain input. Furthermore, the programmable selector 650 can bedriven, for example, by multiple sources of test data. In theillustrated embodiment, for instance, four types of test data arepossible as test stimulus: original test stimulus biased by a biasingcircuit, original test stimulus not biased by a biasing circuit,constant values of 0, or constant values of 1.

An exemplary test application method using the exemplary programmableselector 650 comprises loading control data of the test stimulus intothe programmable controller; providing the test stimuli from theoriginal test stimulus source; shifting the test stimuli into the scanchains; at each scan shift cycle, using the programmable controller todetermine the source passing through the test stimulus selector;applying capture clocks; and unloading test responses from the scanchains. The switching activity created during scan shifting can bereduced by reducing the amount of toggling that occurs in successivescan cells during scan chain loading. Such a reduction can be achievedby performing any one or more of the following acts: loading a constant0 or 1 into a group of scan chains; loading a constant 0 or 1 into oneor more segments of a scan chain; or employing a weighting circuit toincrease the probability of receiving the same logic value inconsecutive scan cells when the scan chains are driven by the originaltest stimulus source.

The programmable controller in one exemplary form increases theflexibility of selecting a test stimulus source during scan shiftoperations while reducing the hardware overhead and additional test datavolume for each test pattern.

FIG. 40 is a flowchart of one exemplary method for selectively modifyingtest pattern values using, for example, a programmable test stimulusselector. At 4010, original test pattern values for testing anintegrated circuit are received on m paths. The original test patternvalues can be received, for example, from a decompressor. At 4012, thetest pattern values on at least n of the m paths are selectivelymodified, where n is less than m, so that the test pattern values on then paths become at least two consecutive constant values. At 4014, testpattern values are output on m scan chain input paths. These testpattern values include the at least two consecutive constant values on nof the m scan chain input paths. In certain implementations, controldata indicating which of the m input paths are to be modified isreceived. The control data can be reused for multiple additional testpatterns. The outputted test pattern values can include all specifiedbits of the original test pattern that target one or more faults in theintegrated circuit. Further, and in certain implementations, the testpattern values can be modified at 4012 in response to control signalsbeing applied to logic gates configured to produce the at least twoconsecutive constant values.

1. Exemplary Test Stimulus Selectors

An exemplary test stimulus selector can comprise a group of selectorswith the same or different functionality. FIG. 7 is a schematic blockdiagram of a programmable test stimulus selector 750 that may be used asthe programmable test stimulus selector 650 of FIG. 6 and that includesmultiple selectors, each coupled to one or more scan chains. Forexample, as shown in FIG. 7, a selector can drive a single given scanchain (such as selector 754 shown driving scan chain 120N) or can drivea group of two or more scan chains (such as selector 752 shown drivingscan chains 120 a, 120 b).

An exemplary form of selector is shown in the schematic block diagram ofFIG. 8 and has two or more inputs and a single output. The illustratedselector 800 can be used, for example, as one of the selectors 752, 754illustrated in FIG. 7. Each of the inputs of the selector is driven by aselected test stimulus source from among multiple test stimulus sources810. In FIG. 8, the test stimulus sources can comprise any number oftest stimulus sources and are represented as test stimulus source 810 ato test stimulus source 810N. The other inputs to the selector 800 inthis example are coupled to the programmable controller 860 and are usedto control which one of the test sources 810 a-810N is to be passed tothe output of the selector 800. Depending on the type of test sourcesavailable, the implementation of the selector can be optimized to reduceits area overhead. In FIG. 8, for example, a multiplexer 802 is used toimplement the selector 800.

Other exemplary forms of selectors as may be used for the test stimulusselection circuitry are shown in FIGS. 9( a)-9(c). In particular, FIGS.9( a)-9(c) show three exemplary selectors 900, 902, 904. Selector 900 iscoupled to an original stimulus source 910 and is controlled byprogrammable controller 920 to produce either the value output from theoriginal stimulus source 910, a logic 0, or a logic 1, using AND gate930 and OR gate 940. Selector 902 is coupled to the original stimulussource 910 and is controlled by the programmable controller 922 toproduce either the value output from the original stimulus source 910 ora logic 1 using OR gate 942. Selector 904 is coupled to the originalstimulus source 910 and is controlled by the programmable controller 924to produce either the value output from the original stimulus source 910or a logic 0 using AND gate 952.

The encoding patterns that can be used to select the values to be loadedinto the scan chain input using the embodiments of FIGS. 9( a)-9(c) areset forth in Table 2.

TABLE 2 Encoding of Control Signals FIG. 9(a) FIG. 9(b) FIG. 9(c) TestStimulus Source ctl_0 ctl_1 ctl_1 ctl_0 Original 1 0 0 1 Logic 0 0 0 NotAvailable 0 Logic 1 X 1 1 Not Available

2. Exemplary Programmable Controllers

The programmable controller 660 of the exemplary architecture shown inFIG. 6 can receive control data from, for example, an external tester,an embedded test generator, or an embedded ROM. In general, thecontroller 660 is responsible for providing signals that select a teststimulus source during each scan shift cycle. According to one exemplaryembodiment, a programmable controller desirably exhibits two properties:it controls each available selector circuit independently; and itselects a test stimulus source in a cycle-based manner. In otherembodiments, the programmable controller is configured to select thetest stimulus source one scan-chain-segment-by-scan-chain-segment basisor test-pattern-by-test-pattern basis.

An exemplary implementation of the programmable controller 660 is shownin the schematic block diagram of FIG. 10. The illustrated controller1000 comprises a shift register file 1010, an XOR network 1020, and anoptional biasing circuitry 1030. The shift register file 1010(representing an arrangement of two or more shift registers) stores thecompressed control data. The compressed control data can be delivered,for instance, from a source such as an external tester, an embedded testgenerator, or an embedded ROM. That data is decompressed by means of theXOR network 1020 and passes through the biasing circuitry 1030 beforedriving the test stimulus selector.

FIG. 11 illustrates an exemplary implementation 1100 of the shiftregister file 1010. The illustrated shift register file 1100 comprises Nshift registers (numbered 1110 a-1110N in this example) and employs aclock Register_Shift_Clock signal 1120 to shift the control data intoeach of its state elements (e.g., the flip-flops of the shift register).Although not illustrated, the registers in the register file 1100 canalso be coupled to each other in a concatenated fashion so that controlcan be serially shifted into the register file in response to the shiftclock. Alternatively, each of the registers in the register file canload data through its own dedicated input. In the illustratedembodiment, each register file contains the control data that selects adifferent test stimulus source for a scan chain segment during scanshift operations.

As illustrated in FIG. 11, the N shift registers can form an N-stageregister pipeline. A pipeline clock signal (Pipeline_Shift_Clock) 1130is generated by a pipeline shift clock generator 1132. Thisimplementation allows one to dynamically change test patterns up to Ntimes during scan shift operations. In some implementations, the testsource for each scan chain is fixed during the entire scan shiftoperation. In such implementations, it is possible to use only one shiftregister, as there is no need to include a pipeline shift clockgenerator.

One exemplary implementation 1200 of a pipeline shift clock generator asmay be used for the generator 1132 in FIG. 11 is shown in FIG. 12. Thecircuit 1200, in the exemplary form shown, includes a counter 1210coupled to a Shift_Clock signal line 1212. The counter 1210 has anoutput coupled to a clock enable circuit 1230. The clock enable circuit1230 outputs a 1 (or other appropriate value) every k cycles to shiftthe pipeline register file. The illustrated form of clock gating logic1240 is a glitch-free design, and comprises or consists of a latch 1242and an AND gate 1244. The Shift_Clock signal line 1212 can be controlleddirectly from an external tester. In such a case, there is no hardwareoverhead related to the pipeline shift clock generator. The Shift_Clocksignal may, in some cases, be the Register_Shift_Clock signal.

In order to reduce the test application time, and as shown in FIG. 13, ashift register file 1300 can be implemented with a shadow register file1310. For example, the control data for test pattern t_(i) can beshifted into the shift register file 1300 in parallel while loading testpattern t_(i−1) to the scan chains through the shadow register file1310. Before loading test pattern t_(i), the Update_Clock signal 1322(also referred to as the Copy_Clock signal) can be activated in order tomove the control data from the shift register file 1300 to the shadowregister file 1310 within one clock period. The control data in theshadow register file 1310 can then be used to select the test stimulussource while loading test pattern t_(i).

The architecture shown in FIG. 13 uses N shift registers and N shadowregisters to support changing the control data N times during scanshift. To reduce area overhead, the registers shown in FIG. 13 can bereplaced with a single shift register and a single shadow register.

To change the control data N times during scan shift in this example, acontrol procedure can be performed. An example of a suitable controlprocedure is described below. For purposes of this example, let S_(i) bethe number of scan cells to be loaded into the i^(th) scan segment,where iε[1,N] and

$\sum\limits_{i = 1}^{N}S_{i}$is equal to the scan chain length. Further, let scan segment S₁ be thesegment closest to the scan output pin and scan segment S_(N) be the oneclosest to the scan input pin. Finally, let L be the length of the shiftregister. The exemplary control procedure is set forth in the pseudocodein Table 3.

TABLE 3 Exemplary Pseudocode for Controlling Shifting in ArchitecturesUsing Shadow Registers 1. Load the control data for shifting in scansegment S₁ and copy it to the shadow register. 2. Set i = 1. 3. While i< N, do (a) Shift test stimuli for the scan segment S_(i) into scanchains and shift the control data for the scan segment i + 1 into theshift register. If S_(i) is greater than L, pad (S_(i) − L) extra bitsbefore the control data such that the last control bit is shifted in atthe same time as the last test pattern bit in S_(i). If S_(i) is lessthan L, load (L − S_(i)) control bits to the shift register first whilestopping scan shift operation for (L − S_(i)) clock cycles. Then loadthe scan chain and the control data simultaneously. (b) Stop scan shiftoperation for one or more clock cycles and use these clock cycles tocopy the control data from the shift register to the shadow register.(c) i = i + 1.

It should be noted that the method acts of the exemplary procedure canbe performed alone or in various combinations and subcombinations withone another depending on the implementation.

The XOR network 1020 of the exemplary controller 1000 shown in FIG. 10can be designed as an N-input, M-output linear mapping circuit, where Nand M are the numbers of control bits and inputs of the biasing circuit,respectively. In other words, each output of the block can be obtainedby XOR-ing certain control bits whose identity is provided by a b-termpolynomial. The XOR network 1020 can be configured in such a way thathigh encoding efficiency is obtained (e.g., close to a 100% ratio ofsuccessfully encoded pre-specified output signals to the number ofcontrol bits). Furthermore, it should be understood that the XOR networkcan be implemented using other types of logic gates (e.g., XNOR gates orother such linear logic gates).

A biasing circuit (such as biasing circuit 1030 in FIG. 10) can beemployed to increase the probability of producing a binary 0 or 1 at anyone or more respective outputs of the XOR network 1020. Assuming thatevery input of the biasing circuit sees substantially a 50-50 split ofzeros and ones, a biasing circuit implemented by, for example, atwo-input AND (OR) gate increases the probability of having the value 0(1) to 75% while reducing the probability of having the value 1 (0) to25%.

Two implementations 1400, 1450 of exemplary biasing circuitry are shownin FIGS. 14( a) and 14(b), respectively. The exemplary biasing circuitry1400 in FIG. 14( a) is configured to provide three test stimulussources. For instance, with the illustrated biasing circuit 1400, theprobabilities of selecting an original test stimulus source 1410,selecting the constant 0, or selecting the constant 1 are 12.5%, 37.5%,and 50%, respectively. The exemplary biasing circuitry 1450 in FIG. 14(b) is configured to provide two test stimulus sources. For instance,with the illustrated biasing circuit 1450, the probabilities ofselecting an original test stimulus source 1410, or selecting theconstant 0 are 25% and 75%, respectively. The fraction of scan chainsdriven by the decompressor can be changed in the manner of FIG. 14( a)by adding more inputs to the AND gates on the outputs of the XORnetwork. For example, the addition of 3-input AND gates reduces thispercentage down to 6.25%, while the fraction of scan chains getting theconstant 0 increases accordingly.

It should be understood that a variety of different biasing circuits canbe generated using different combinations of logic gates and dependingon the desired probabilities of selecting the various possible teststimuli sources. Such variations would be understood by those ofordinary skill in the art and need not be set forth in detail here.

When the original test stimulus source is a decompressor, the actualnumber of scan chains that can be driven by the decompressor may dependon the encoding capabilities of the programmable controller. Because theencoding process is equivalent to solving a set of linear equations(see, e.g., U.S. Pat. No. 6,327,687), setting an output signal of theXOR network 1020 to a pre-specified value requires, on the average, onecontrol bit (e.g., one variable). Therefore, for the biasing circuit1400 shown in FIG. 14( a), it will typically be necessary to solve threeequations (one per each gating signal) in order to drive the associatedscan chain with specified bits. However, if a scan chain containsspecified bits of only one value, the scan chain can be driven by amatching constant value. In such cases, it is usually possible to encodethe control bits with fewer than three equations (e.g., just oneequation). For instance, if the required constant is equal to 1, then itsuffices to use an equation for the XOR network 1020 that represents thegating signal driving the OR gate 1422 and that is set to 0 (sinceinverter 1420 will cause the 0 to become a 1, thereby causing OR gate1422 to output only 1s). If all specified bits are 0s, then the signaldriving the OR gate 1422 can be set to 1. This does not force a constant0 in the scan chain yet, as AND gate 1424 should also have a 0 on itsinput. However, to preserve the encoding capacity, one can choose not touse another equation. In this situation, two scenarios are possible:either the signal driving the AND gate 1424 is set to 0 and the scanchain receives the constant 0, or the decompressor feeds the scan chainwith test data consistent with the specified 0s.

To enhance the ability of a biasing circuit to reduce the switchingactivity during scan-in shifting, the biasing circuit (such as biasingcircuit 1030 shown in FIG. 10) can be designed as a reconfigurabledevice. An exemplary form of a reconfigurable biasing circuit 1500 isshown in FIG. 15. This example comprises or consists of plural biasingcircuits 1510 a-1510N with different probabilities of selecting teststimulus sources. A programmable controller 1520 can be used to selectone of the biasing circuits 1510 a-1510N. Control data can be loadedinto the programmable controller 1520 using, for example, an externaltester, an internal test generator, or an embedded ROM. Depending on theimplementation, the reconfigurable biasing circuit 1500 of FIG. 15 canbe used in two modes: (1) the selected biasing circuit 1510 a-1510N canremain unchanged during the whole scan shift period; or (2) variousbiasing circuits 1510 a-1510N can be chosen for different scan chainsegments during scan shift. The architecture of the programmablecontroller 1520 can be the same as that of the other programmablecontrollers discussed above and used to control the test stimulusselector 652.

Another form of a reconfigurable biasing circuit 1600 is shown in FIG.16. In this particular implementation, the probability of selecting theoriginal test stimulus or the constant 0 is 50%, provided that thecontrol data loaded into shadow data flip flop 1610 (“DFF”) is equalto 1. On the other hand, if the control data loaded into the shadow DFF1610 is set to 0, then the probability of selecting the original teststimulus source or the constant 0 is 25% or 75%, respectively.

B. Low Power Test Generation for Architectures Having ProgrammableControllers

During automatic test pattern generation (“ATPG”), the test generationprocedure can be adapted to take into account the existence of aprogrammable controller (e.g., to take into account the area limitationsof the programmable controller). FIG. 17 is a schematic block diagramillustrating one exemplary architecture 1700 for which the ATPGprocedure can be used. For purposes of the example in FIG. 17, assumethat the test stimulus selector is implemented as a decompressor 1710(e.g., an EDT decompressor). In the illustrated embodiment, there aretwo types of test stimulus sources: a decompressor 1710 and a constant0. In this example, the constant 0 is produced by controller 1720, whichcomprises a biasing circuit 1730 of AND gates, an XOR network 1740, ashadow register 1750 and a shift register 1760. The type of teststimulus source driving a scan chain can remain unchanged during a scanloading operation. For example, the XOR network 1740 can be designed insuch a way that loading shadow register 1750 with an all-1 pattern willresult in all of the scan chains being driven by the decompressor 1710.

An exemplary procedure for generating test patterns for the architectureshown in FIG. 17 is set forth in the following pseudocode. It should benoted that this procedure can be readily extended to other architectureswith other decompression hardware and/or other programmable testselectors.

TABLE 4 Exemplary Pseudocode for Generating Test Patterns with theExemplary Test Stimulus Selector of FIG. 17 Exemplary Procedure:generate_tests_with_test_stimulus_selector 1. Identify hardwarelimitations of the test stimulus selector. (The exemplary hardware shownin FIG. 17 can select up to 75% of scan chains to be driven by theconstant 0.) 2. Set test set T to be empty. 3. Set the maximum number ofscan chains that are driven by the decompressor to N. (For the hardwareof FIG. 17, N should not be greater than 25% of the total number of scanchains.) 4. While target fault list F is not empty, do: a. Set test cubeC to an all-x pattern. b. Pick a fault f from F and remove it from F. c.Generate test cube C_(f) for f. d. If f is untestable, continue fromstep 4. e. Merge C_(f) with C and set S to be the number of specifiedscan chains in C. f. Mark every fault in F as untried. g. While thereexist untried faults in F and S is not greater than N, do: i. Pick anuntried fault g from F and mark it as tried. ii. Assign C to C_(g). iii.Expand C_(g) by specifying additional x bits in C_(g) to detect g. iv.If fault g cannot to be detected by expanding C_(g), or the number ofspecified chains in C_(g) is greater than S, continue from act 4(g). v.Remove g from F. vi. Assign C_(g) to C and set S to be the number ofspecified chains in C. h. Generate control data to be loaded into theprogrammable controller such that for scan chains having specified bits,the corresponding gating signals are set to 1, and for the remainingscan chains, the corresponding gate signals are set so that the scanchains are driven by the constant 0. i. Generate a new test pattern t byfilling unspecified bits in C based on their test sources assigned fromthe control data. j. Fault simulate t and drop detected faults from F.k. Add t to test set T. 5. Return generated test set T.

It should be noted that the method acts of the exemplary procedure canbe performed alone or in various combinations and subcombinations withone another depending on the implementation.

The exemplary procedure set forth in Table 4 includes a procedure thatprovides an additional check (e.g., before act 4(g)(v)) to verifywhether the control data for the test selector 1740 can be generatedsuch that all the scan chains with specified bits can be driven by thedecompressor. If the control data cannot be generated for the test cubeC_(g), it can be discarded and the original test cube can be keptunchanged. Moreover, if the only specified bits in a scan chain are 0s,then, in this example, there is no need to count this chain in S.

FIG. 44 is a flowchart of another exemplary embodiment for test patterngeneration according to the disclosed technology. At 4410, the number ofscan chains to be driven by an original test stimulus source isdetermined. The number is typically less than the number of availablescan chains in a circuit design. In certain implementations, theoriginal test stimulus source is a decompressor configured to decompresscompressed test patterns provided by an external tester. In someimplementations, the encoding capacity of a controller for a teststimulus selector is used to determine the number of scan chains to bedriven by an original test stimulus source. For instance, the number ofscan chains to be driven by the original test stimulus source can bebased on the maximum number of scan chains that can be individuallycontrolled by a test stimulus selector. At 4412, a fault from a targetfault list is selected. At 4414, a test cube for the selected fault isgenerated. The test cube comprises specified bits in a number ofspecified scan chains. At 4416, a determination is made as to whetherthe number of specified scan chains in the test cube is less than thenumber of scan chains to be driven by the original test stimulus source.If the number of specified scan chains in the test cube does not exceedthe number of scan chains to be driven by the original test stimulussource, the test cube is stored and an additional fault is selected fromthe fault list at 4418. Otherwise, the test cube is rejected at 4424 andthe method continues with the next fault from the target fault list ifthere are any more faults on the list (as determined at 4432). At 4420,the test cube for the first fault is expanded to include one or moreadditional specified bits for detecting the second fault. At 4422, adetermination is made as to whether the one or more additional specifiedbits cause the number of specified scan chains in the expanded test cubeto exceed the number of scan chains to be driven by the original teststimulus source. If the number of specified scan chains in the expandedtest cube does not exceed the number of scan chains to be driven by theoriginal test stimulus source, the expanded test cube can be stored andthe process of selecting additional faults and expanding the test cubeto include the additional faults is repeated if there are any additionalfaults (as determined at 4428). If the number of specified scan chainsin the expanded test cube exceeds the number of scan chains to be drivenby the original test stimulus source, then the expanded test cube isrejected at 4426 and the acts of selecting, expanding, determining, andstoring are repeated for the next fault from the target fault list, ifany. In some implementations, control signals for a test stimulusselector can be generated based on the stored test cubes. These controlsignals can be capable of causing the test stimulus selector to applyconstant values to the unspecified scan chains as a test pattern withthe test cube is loaded during testing.

C. Reduction of Control Data Volume

When generating test patterns, it is possible to make different testpatterns that share the same control data such that the control data canbe loaded into the programmable controller only once for multiple testpatterns. In such instances, for example, only the unique control datacan be stored in the external tester. To maximize the control data to beshared with different test patterns, the act 4(h) set forth in theexemplary pseudocode in Table 4 can be enhanced to give preference tocontrol data that meets the current requirement and that is used by morethan one test pattern.

Selecting different constant logic values loaded into the scan chainsand fed by the constant test stimulus source can have a different impacton the switching activity during the capture phase. A preferred fillapproach (embodiments of which are described in U.S. Patent ApplicationPublication No. 2007/0250749, which is hereby incorporated herein byreference) can be used with embodiments of the disclosed technology.Such approaches use signal probabilities to help determine the fillingvalue during test pattern generation that reduces the switching activityduring capture. These strategies can be used with the disclosedtechnology, for example, to select the constant test stimulus source insuch a way that a constant 0 is chosen anytime the number of scan cellswith the preferred value 0 is greater than or equal to the number ofscan cells with the preferred value 1. Note that the term “the number ofscan cells” refers here either to all scan chains having the same testsource, a group of scan chains sharing the same test source, or anindividual scan chain driven by its own test source.

IV. Low Power Capture and Scan Shift Operations with Scan Enablers

Switching activity can be reduced by shifting constant logic values intoa group of scan chains during the scan shift phase of testing. Theswitching activity during scan shifting is also determined by the valuesof the test responses that are captured during testing and shifted outas a new test pattern is shifted in.

If a scan chain loaded with a constant value is held in the scan shiftmode during the capture window, then both the scan-in shift power andthe scan-out shift power can be reduced. This is due to the fact thatthe values captured into the scan cells that are held in the scan shiftmode will be the same as the loading values. Thus, the values do notcreate transitions that cause toggling in the downstream gates duringthe capture window and during the unloading of a test response. Even ifthe scan chain is not designed to operate at speed when the scan mode isenabled, the logic value at a scan cell operated in the shift modeduring the capture window will not ordinarily become unknown during thattime frame as the data input value of the scan cell will be unchanged.

A. Exemplary Architectures of Programmable Scan Enablers

An exemplary testing architecture 1800 having a programmable scanenabler is illustrated in FIG. 18. In particular, FIG. 18 shows aprogrammable scan enabler 1810 inserted between a Global_Scan_Enablesignal line 1812 and scan enable inputs 1814 of the scan chains. Thescan enabler 1810 can, for example, comprise or consist of twocomponents: a scan enable circuit 1820 and a programmable controller1830.

An exemplary test application procedure using the programmable scanenabler 1810 comprises loading control data for the test pattern t intothe programmable test stimulus selector and the programmable scanenabler; asserting the Global_Scan_Enable signal to switch the circuitinto a shift mode; shifting the test stimulus t into the scan chains;de-asserting the Global_Scan_Enable signal to switch the circuit into acapture mode; selectively asserting a scan enable signal to one or moreselected scan chains; applying capture clocks; and asserting theGlobal_Scan_Enable signal to switch circuit into the shift mode andunload a test response from the scan chains.

FIG. 41 is a flowchart illustrating an exemplary embodiment for applyingscan enable signals to a circuit during testing. At 4110, a scan enablesignal is applied to scan chains of a circuit-under-test as adecompressed test pattern from a decompressor is loaded into the scanchains. The scan enable signal causes the scan chains to operate as oneor more shift registers. At 4412, the scan enable signal is applied toone or more of the scan chains as a test response to the decompressedtest pattern is captured in a remainder of the scan chains to which thescan enable signal is not applied. In some implementations, the one ormore of the scan chains to which the scan enable signal is appliedcomprise one or more scan chains that would otherwise capture unknownvalues. Control signals can also be received that control which of thescan chains will have the scan enable signal applied as the testresponse to the decompressed test pattern is captured. These controlsignals can be reused as multiple additional decompressed test patternsare loaded into the scan chains. Still further, the control signals fora next test pattern can be loaded as the test pattern is being loadedinto the scan chains.

B. Exemplary Scan Enable Circuits

The scan enable circuit 1820 of FIG. 18 can be implemented in a varietyof ways. One exemplary scan enable circuit 1900 is shown in FIG. 19. Inparticular, scan enable circuit 1900 comprises plural scan enablers (twoof which are numbered as 1910, 1912 in FIG. 19). As shown in FIG. 19, ascan enabler can drive either a single scan chain's scan enable input(as with scan enabler 1912) or two or more scan chains' scan enableinputs (as with scan enabler 1910). The function of the exemplary scanenablers is to handle the Global_Scan_Enable signal in such a way thatwhen the signal is de-asserted, the individual scan enable signal thatthe scan enablers output to the one or more scan chains is controlled byprogrammable controller 1930. An implementation of one form of scanenabler (such as 1910) is shown as scan enabler 2000 in FIG. 20.

C. Scan Enable Programmable Controller

The architecture of a scan enable programmable controller (e.g.,programmable controller 1830 shown in FIG. 18) can be the same as forthe controllers described earlier for selecting test stimuli sources.The use of an independent programmable controller for test stimulusselection in addition to a programmable scan enabler controller allowsfor the flexible control of scan enable signals for a group of scanchains loaded with a constant value. However, the use of both aprogrammable controller for test stimulus selection and a programmablescan enable controller can increase the test data volume and createadditional area overhead. Therefore, in certain embodiments, theprogrammable test stimulus selector and the programmable scan enablershare a programmable controller.

An exemplary architecture having a shared controller is shown in FIG.21. In particular, FIG. 21 shows an architecture 2100 in which a sharedcontroller 2110 is used to control both test stimulus selector 2120 andscan enable circuit 2130. The controller 2110 can be implemented usingany of the controller designs introduced above.

The test generation procedure for a scan-based architecture with aprogrammable scan enabler can be similar to the test generationprocedure described above. For illustrative purposes, an exemplary testgeneration procedure will be described for the exemplary scanarchitecture illustrated in FIG. 22. In relevant part, the exemplaryarchitecture 2200 of FIG. 22 includes a single programmable controller2210 that is used to control a test stimulus selector 2222 and a scanenabler 2224. The exemplary procedure described herein can be extendedto other scan architectures having both a programmable test stimulusselector and a programmable scan enabler.

In FIG. 22, two types of test stimulus sources are illustrated:decompressor 2220 and a source for the constant 0 (implemented by theAND gates in the test stimulus selector 2222). The type of test stimulifed to a scan chain in this example remains unchanged during the scanloading process. Furthermore, with the illustrated embodiment, when ascan chain is driven by the constant 0, the Scan_Enable signal of thechain is asserted. The Scan_Enable signal can be applied not only duringthe scan shift phase of testing, but also during the capture phase sothat the scan chain remains loaded with constant 0s. The XOR network2230 can be designed in such a way that all the scan chains are drivenby the decompressor 2220 when control shadow register 2240 is loadedwith an all-1 pattern.

Table 5 includes exemplary pseudocode that describes one particularprocedure for generating test patterns using test architectures thatinclude both a test stimulus selector and a scan enabler.

TABLE 5 Exemplary Pseudocode for Generating Test Patterns with theExemplary Test Stimulus Selector and Scan Enable Circuitry of FIG. 22Exemplary Procedure:generate_tests_with_test_stimulus_selector_and_scan_enabler 1. Identifyhardware limitations of the programmable test stimulus selector and theprogrammable scan enabler. (The exemplary hardware shown in FIG. 22 canselect up to 75% of scan chains to be driven by the constant 0 as wellas to stay in the scan shift mode during capture.) 2. Set test set T tobe empty. 3. Set the maximum number of scan chains that are driven bythe decompressor to be N. (For the hardware of FIG. 22, N should not begreater than 25% of the total number of scan chains.) 4. While targetfault list F is not empty, do: a. Set test cube C to an all-X pattern.b. Pick a fault f from F and remove it from F. c. Generate test cubeC_(f) for f. d. If f is untestable, continue from step 4. e. Merge C_(f)with C and set S to be the number of scan chains in C having specifiedbits and/or being used to observe fault effects of f. f. Mark everyfault in F as untried. g. While there exist untried faults in F and S isnot greater than N, do: i. Pick an untried fault g from F and mark it astried. ii. Assign C to C_(g). iii. Expand C_(g) by specifying additionalx bits in C_(g) to detect g. iv. If fault g cannot to be detected byexpanding C_(g), continue from act 4(g). v. If the number of scan chainsin C_(g) having specified bits and/or being used to observe the faulteffects for the fault g and all the faults targeted and detected by C isgreater than S, continue from act 4(g). vi. Remove g from F. h. Generatecontrol data to be loaded into the programmable controller such that forscan chains having specified bits and/or being used to observe the faulteffects for the faults targeted and detected by C, the correspondinggating signals are set to 1, and for the remaining scan chains, thecorresponding gating signals are set so that the scan chains are drivenby the constant 0 and are kept in the shift mode during capture. i.Generate a new test pattern t by filling unspecified bits in C based ontheir test sources assigned from the control data. j. Fault simulate tand drop detected faults from F. k. Add t to test set T. 5. Returngenerated test set T.

It should be noted that the method acts of the exemplary procedure canbe performed alone or in various combinations and subcombinations withone another depending on the implementation.

The exemplary procedure set forth in Table 5 includes a procedure (e.g.,before act 4(g)(vi)) that is used to verify if the control data for thetest selector can be generated such that all the scan chains withspecified bits can be driven by the decompressor. If the control datacannot be generated for the test cube C_(g), it can be discarded and theoriginal test cube can be kept unchanged. Moreover, if the onlyspecified bits in a scan chain are 0s, and the scan chain is not used toobserve any fault effect, there is no need in this example to count thischain in S.

Furthermore, although the exemplary procedure outlined in Table 5concerns generating control signals in architectures having both a teststimulus selector and a scan enable circuit, the procedure can bemodified for architectures having just a scan enable circuit. Forexample, the variable S can be set to represent only the number of scanchains used to observe fault effects and the evaluation made at act4(g)(v) can be based on the number of bits used to observe faults in theexpanded test cube.

FIG. 45 is a flowchart illustrating an exemplary test pattern generationprocedure for generating test patterns in architectures having a scanenable circuit. At 4510, a number of scan chains usable to observe faulteffects is determined. The number is typically less than the number ofavailable scan chains in a circuit design. In certain implementations,the encoding capacity for a controller of a scan enable circuit is usedto determine the number of scan chains usable to observe fault effects.(When the exemplary test pattern generation procedure is used inconnection with certain embodiments described below, the number of scanchains usable can be determined from the encoding capacity of acontroller of a clock enable circuit, a controller of a reset enablecircuit, or a controller of a shift clock enable circuit.) At 4512, afault from a target fault list is selected. At 4514, a test cube for theselected fault is generated and the number of scan chains used toobserve fault effects from the test cube is determined (e.g., usingfault simulation). At 4516, an evaluation is made as to whether thenumber of scan chains used to observe fault effects from the test cubeis less than the number of scan chains usable to observe fault effects.If the number of scan chains used to observe fault effects from the testcube is less than the number of scan chains usable to observe faulteffects, the test cube is stored and an additional fault is selectedfrom the fault list at 4518. If the number of scan chains used toobserve fault effects from the test cube exceeds the number of scanchains usable to observe fault effects, then the test cube is rejectedat 4524 and the process is repeated if there are additional faults inthe fault list (as determined at 4532). At 4518, the test cube for thefirst fault is expanded to include one or more additional specified bitsfor detecting the second fault. At 4522, a determination is made as towhether the one or more additional specified bits cause the number ofscan chains used to observe fault effects from the expanded test cube toexceed the number of scan chains usable to observe fault effects. If thenumber of scan chains used to observe fault effects from the test cubeis less than the number of scan chains usable to observe fault effects,the expanded test cube is stored and the process of selecting additionalfaults and expanding the test cube if possible is repeated if there areadditional faults on the fault list (as determined at 4528). If thenumber of scan chains used to observe fault effects from the test cubeexceeds the number of scan chains usable to observe fault effects, theexpanded test cube is rejected at 4526 and the process of selectingadditional faults and expanding the test cube if possible is repeated ifthere are additional faults on the fault list (as determined at 4528).Control signals for the scan enable circuit can be generated based onthe test cube. These control signals can be capable of causing the scanenable circuit to suppress scan enable signals from scan chains that donot observe fault effects from the test cube when a test pattern withthe test cube is applied during testing.

As shown by Table 5, embodiments of the test pattern generation methodscan also be used for architectures that include both a scan enablecircuit and a programmable test stimulus source. In these cases, thedetermination of whether a test cube or expanded test cube can beaccepted or not can also involve determining whether the number ofspecified chains in the test cube is less than the number of scan chainsto be driven by the original test stimulus source. The number of scanchains to be driven by the original test stimulus source can be based,for instance, on the maximum number of scan chains that can beindependently controlled by a scan enable circuit.

D. Suppression of Unknown States

Unknown states (sometimes referred to as “X states”) can potentiallyrender a test useless. Sources of X states include uninitialized memoryelements, bus contentions, non-scan flip-flops, floating buses, internalthree-state logic, and multi-cycle and false paths when generatingat-speed tests. In many scan-based designs, X states, once captured inscan cells, can be subsequently injected into a test response compactor.In the test response compactor, X states can severely affect testresults. The potential for test response corruption due to X states isespecially great if a time compactor is used. For example, in timecompactors, an X state can quickly multiply due to the feedback fan-out,contaminate the signature, and stay in the compactor until the signatureis read out. By contrast, combinational compactors (which are a form ofspatial compactor) are relatively immune to X states. To avoid maskingand to allow diagnosis, however, such compactors sometimes have toobserve each scan chain on two or more outputs. Finite memory compactorsflush X states out of their registers after a number of scan shiftcycles.

Even if a compactor is designed to tolerate a pre-specified number of Xstates, its vulnerability to X states can still produce unusable testresponses. Therefore, it is desirable to limit the X states introducedinto a compactor through a scan chain selection mechanism. Otherwise,certain combinations of X states not eliminated by an ATPG tool couldprevent the observability of certain scan cells and cause the overallfault coverage drop.

There are several schemes that allow for the selective observation ofscan chains using circuitry that masks selected unload values so that Xstates do not reach a compactor. Exemplary approaches for providing scanchain selection logic and ranking scan chains for purposes of generatingappropriate masking signals are described in U.S. Patent ApplicationPublication Nos. 2007/0234157, 2007/0234163, and 2007/0234169, and G.Mrugalski et al., “Test Response Compactor with Programmable Selector,”Proc. DAC, pp. 1089-1094 (2006) (“G. Mrugalski et al.”), all of whichare hereby incorporated herein by reference. The exemplary approachesassist in finding scan chain selection control data that can besubsequently employed to suppress X states. Briefly stated, in certainembodiments described in U.S. Patent Application Publication Nos.2007/0234157, 2007/0234163, and 2007/0234169, and G. Mrugalski et al., Xstates are masked by using logic gates driven by the scan chains andappropriate gating signals are produced by a programmable controllerbased on compressed control data. As a result, the disclosed approachessignificantly reduce or entirely eliminate the X states occurring intest responses.

Embodiments of the disclosed technology can be used with the techniquesdescribed in U.S. Patent Application Publication Nos. 2007/0234157,2007/0234163, and 2007/0234169, and G. Mrugalski et al. in order toperform efficient scan chain selection. However, when using embodimentsof the disclosed technology, dedicated gating logic at the outputs ofthe scan chains is not necessary, as its functionality can be replacedby scan enable circuitry configured to hold selected scan chains in thescan shift mode during capture. An example of such functionality isillustrated using the exemplary architecture 2300 shown in FIG. 23.Instead of gating scan chains that carry X states, programmable scanenabler 2310 can be used to keep any of scan chains 120 a-120N in theshift mode throughout a test cycle. This technique essentially preventsthe scan chains 120 a-120 n from capturing X states and loading theminto compactor 2320.

In the specific example of FIG. 23, approximately 75% of the scan chainscan remain in the scan shift mode during application of a given testpattern and not capture any test response values from the combinationallogic of the circuit. The remaining 25% of the scan chains can capturethe test response values that include values indicative of the presenceof a targeted fault. The approach of FIG. 23 can be easily integratedwith the solution described in connection with FIG. 22. As a result, thesame control circuitry used to handle parallel power dissipation can beused to handle the presence of unknown states.

An exemplary technique for generating control data for the scan enablecircuit that prevents X states from being captured comprises simulatinga test pattern being applied to a circuit-under-test to generate asimulated test response; identifying one or more scan chains of thecircuit-under-test that capture unknown states from the simulated testresponse; and generating control signals that cause the scan enablecircuit to suppress the scan enable signal of one or more of theidentified scan chains during the capture window. The control signalsthat are generated can be stored on one or more computer-readable mediaand subsequently loaded into the programmable controller of the scanenable circuit during test application.

V. Low-Power Capture and Scan Shift Operations with Clock Enablers

During test generation, it can be determined that certain scan chains donot observe fault effects (e.g., by simulating application of testpattern to the circuit-under-test). Capturing new values into those scanchains during the capture window can create undesired switchingactivity. To reduce the toggling in the capture window, the respectiveclocks for these scan chains (e.g., the respective clock trees) can bedisabled such that the switching activity in the capture window isreduced. The relevant clocks may be a dedicated capture clock that isdistributed to each of the scan cells of a scan chain or a single clockdistributed though a single clock tree that provides both the shiftsignals (e.g., at a first frequency) and the capture signals (e.g., at asecond frequency). In the latter scenario, the shift signals and thecapture signals can be generated by a clock generator coupled to theclock tree.

A. Architectures of Exemplary Programmable Clock Enablers

FIG. 24 is a schematic block diagram showing an exemplary scan-basedarchitecture 2400 employing a programmable clock enabler 2410. Inparticular, the programmable clock enabler 2410 is inserted between theclock (e.g., a capture clock) and a clock tree driving scan chains 120a-120N. As shown in FIG. 24, an exemplary programmable clock enabler2410 can comprise or consist of two components: a clock enable circuit2420 and a programmable controller 2430.

An exemplary test application procedure using the architecture 2400comprises loading control data of a test pattern t into the programmablecontroller 2430; asserting Global_Clock_Enable signal 2440 before scanshifting starts; shifting the test stimulus t into the scan chains;de-asserting Global_Clock_Enable signal 2440 at the end of scan shiftoperation; applying the capture signals to selected scan chains; andasserting Global_Clock_Enable signal 2440 before unloading test responsefrom the scan chains.

FIG. 42 is a flowchart showing an exemplary method for applying andsuppressing clock signals during testing. At 4210, a clock signal isapplied to scan chains of a circuit-under-test as a decompressed testpattern from a decompressor is loaded into the scan chains of thecircuit-under-test. At 4212, the clock signal is suppressed at one ormore but not all of the scan chains or segments of the scan chains as atest response to the decompressed test pattern is captured during acapture window. The suppression of the clock signal causes the one ormore but not all of the scan chains or segments of the scan chains toremain in a constant state during the capture window. The one or morebut not all of the scan chains or segments of the scan chains cancomprise one or more scan chains or segments of the scan chains thatwould otherwise capture unknown values. Furthermore, control signals canbe received that control which scan chains or segments of the scanchains will have the clock signal suppressed during the capture window.The control signals can be reused as test responses to multipleadditional decompressed test patterns are captured.

B. Exemplary Clock Enable Circuits

The clock enable circuit 2410 can be implemented in a variety of ways.FIG. 25 illustrates one implementation of a clock enable circuit 2510.In particular, clock enable circuit 2510 can comprise or consist ofplural clock enablers (two of which are numbered 2520, 2522 in FIG. 25).In the illustrated example shown in FIG. 25, a clock enabler drives theclock tree of either a single scan chain (as with clock enabler 2522) ora group of two or more scan chains (as with clock enabler 2520). Inparticular, clock enabler 2520 is shown in FIG. 25 driving scan chains120 a, 120 b, whereas clock enabler 2522 is shown driving scan chain120N.

Two alternative exemplary configurations of clock enablers are shown inFIGS. 26( a) and 26(b). In FIG. 26( a), plural clock enablers 2610, 2612drive different segments of the same scan chain 2620. In FIG. 26( b),the same clock enabler 2650 drives plural segments of different scanchains 2660, 2662. Note that there is no need in these examples for asegment of a scan chain to be connected in a continuous manner. Instead,a segment of a scan chain can include any two or more scan cells in thescan chain.

Referring back to FIG. 24, in certain embodiments, the clock enabler2410 can control the clocks at each state element so that the originalclock is applied when the Global_Clock_Enable signal 2440 is asserted.In the capture mode, when the Global_Clock_Enable signal is de-asserted,the clock 2450 that triggers the scan cells in the scan chains can begated using the control data loaded into the programmable controller2430.

An exemplary glitch-free exemplary implementation 2700 of a clockenabler is shown in FIG. 27. When a glitch is not a concern, latch 2710shown in FIG. 27 can be removed and the output of OR gate 2720 can bedirectly connected to the input of AND gate 2730.

To reduce area overhead, a clock enable circuit (e.g., clock enablecircuit 2420) can be shared with the existing clock gating logic, ifapplicable. An example of original clock gating logic 2800 is shown inFIG. 28( a). In particular, in FIG. 28( a), the Scan_Enable signal 2810serves as a global clock enable signal. For instance, when theScan_Enable signal is a 1, all clock gates (e.g., gate 2830) in thedesign are enabled by ignoring the signal 2820 from the functionalcontroller.

An exemplary modification 2850 of the existing clock gating logic 2800is shown in FIG. 28( b). In the particular modification shown in FIG.28( b), AND gate 2852 is inserted between the OR gate 2860 and signalpath 2870 from the functional controller. When Scan_Enable signal 2880is a 0, in this example, the signal from the programmable clock enabler2890 enables/disables the functional clock control signal 2870.

The controller 2430 for the programmable clock enabler can beimplemented using any of the controller designs introduced above.Furthermore, when the group of scan chains to be disabled during thecapture window is the same for all capture cycles, the controller can beimplemented using only one shift register. To allow for the group ofscan chains to be disabled during the capture window to be dynamicallychanged at different capture cycles, a shift register file comprisingtwo or more pipelined shift registers (such as the shift register fileof FIG. 11) can be used.

C. Switching Activity Reduction for Both Scan Shift and Capture

To reduce switching activity during both the scan shift and capturephases, embodiments of the programmable clock enabler can be used incombination with embodiments of the programmable test stimulus selectorintroduced above. An exemplary scan architecture 2900 having both aprogrammable clock enabler and a programmable test stimulus selector isshown in FIG. 29. The most efficient reduction of switching activity isobserved when the scan chains loaded with constant test stimuli aredisabled to capture new data such that there is no transition whenunloading test responses from those scan chains.

To minimize area overhead, the programmable controller for theprogrammable clock enabler can be shared with the programmable teststimulus selector. FIG. 30 shows an implementation 3000 with such ashared programmable controller.

D. Test Pattern Generation

The test pattern generation procedure for a scan-based architectureusing a programmable clock enabler can be similar to the test patterngeneration procedures described above. For instance, assume that thescan architecture is as shown in FIG. 30. In FIG. 30, there are twotypes of test sources: a decompressor 3010 and a source producing theconstant 0 (produced by gates 3020 in combination with the programmablecontroller 3030). The type of test stimuli fed to a scan chain isunchanged in this example during scan shifting. For the illustratedarchitecture, when a scan chain is driven by the constant 0, the clockdriving the scan chain is disabled during capture. In this example, XORnetwork 3040 is designed in such a way that the decompressor 3010 drivesall the scan chains when the control data at the shadow register 3050 isloaded with an all-1 pattern.

Table 6 includes exemplary pseudocode that describes one particularprocedure for generating test patterns using test architectures thatinclude both a test stimulus selector and a clock enabler.

TABLE 6 Exemplary Pseudocode for Generating Test Patterns with theExemplary Test Stimulus Selector and Clock Enable Circuitry of FIG. 30Exemplary Procedure:generate_tests_with_test_stimulus_selector_and_clock_enabler 1. Identifyhardware limitations of the programmable test stimulus selector and theprogrammable clock enabler. (The exemplary hardware shown in FIG. 30 canselect up to 75% of scan chains to be driven by the constant 0 as wellas have their clocks disabled during capture.) 2. Set test set T to beempty. 3. Set the maximum number of scan chains that are driven by thedecompressor to be N. (For the hardware of FIG. 30, N should not begreater than 25% of the total number of scan chains.) 4. While targetfault list F is not empty, do: a. Set test cube C to an all-X pattern.b. Pick a fault f from F and remove it from F. c. Generate test cubeC_(f) for f. d. If f is untestable, continue from step 4. e. Merge C_(f)with C and set S to be the number of scan chains in C having specifiedbits in all the capture clock cycles and/or being used to observe thefault effect of f. f. Mark every fault in F as untried. g. While thereexist untried faults in F and S is not greater than N, do: i. Pick anuntried fault g from F and mark it as tried. ii. Assign C to C_(g). iii.Expand C_(g) by specifying additional x bits in C_(g) to detect g. iv.If fault g cannot to be detected by expanding C_(g), continue from step4g. v. If the number of scan chains in C_(g) having specified bits inall the capture clock cycles and/or being used to observe the faulteffects for the fault g and all the faults targeted and detected by C isgreater than S, continue from step 4g. vi. Remove g from F. h. Generatecontrol data for loading into the programmable controller such that forthe scan chains having specified bits in all the capture clock cyclesand/or being used to observe the fault effects for all the faultstargeted and detected by C, the corresponding gating signals are set to1, and for the remaining scan chains, the corresponding gating signalsare set so that the scan chains are driven by the constant 0 and theirclocks are disabled during capture. i. Generate new test pattern t byfilling unspecified bits in C based on their test stimulus sourcesassigned from control data. j. Fault simulate t and drop detected faultsfrom F. k. Add t to test set T. 5. Return generated test set T.

It should be noted that the method acts of the exemplary procedure canbe performed alone or in various combinations and subcombinations withone another depending on the implementation.

The exemplary procedure set forth in Table 6 employs additional checkingbefore act 4(g)(vi) to verify if the control data for the programmablecontroller can be generated such that the scan chains with specifiedbits can be driven by the decompressor. If the control data cannot begenerated for the test cube C_(g), it can be discarded and the originaltest cube can be left unchanged. Moreover, if the only specified bits ina scan chain are 0s, and the scan chain is not used to observe any faulteffect, there is no need in this example to count this chain in S.

Furthermore, although the exemplary procedure outlined in Table 6concerns generating control signals in architectures having both a teststimulus selector and a clock enable circuit, the procedure can bemodified for architectures having just a clock enable circuit. Forexample, the variable S can be set to represent only the number of scanchains used to observe fault effects and the evaluation made at act4(g)(v) can be based on the number bits used to observe faults in theexpanded test cube.

The exemplary embodiment shown in FIG. 45 and discussed above can alsobe used to generate test patterns for architectures having a clockenable circuit. In such embodiments, control signals for a clock enablecircuit can be generated based on the generated test cubes. Forinstance, the control signals can be capable of causing the clock enablecircuit to suppress clock signals from scan chains that do not observefault effects from the test cube when a test pattern with the test cubeis applied during testing.

E. Suppression of Unknown States

The programmable clock enabler can be used to preclude the propagationof X states into scan cells. A significant number of X states that mightbe otherwise captured can be neutralized by using programmable clockenablers to perform scan chain selection. One exemplary architecture3100 that can be used to suppress X states in a scan-based environmentis shown in FIG. 31. For instance, the architecture 3100 can be used tohelp reduce the amount of X masking on the outputs of a test responsecompactor (e.g., compactor 3110 in FIG. 31). As was the case withdeploying scan enablers, there is no need to use any customized gatinglogic at the outputs of the scan chains when using clock enablers toprevent X states from being captured. The desired functionality can beachieved by disabling clocks of the selected scan chains during capture.In other words, instead of gating scan chains that carry X states, onecan use one or more exemplary programmable clock enabler 3120 to disableclock trees of the designated scan chains. The programmable clockenablers 3120 can be driven, for instance, by precomputed data (e.g.,computed in any of the exemplary manners described in U.S. PatentApplication Publication Nos. 2007/0234157, 2007/0234163, and2007/0234169, and G. Mrugalski et al.). This exemplary techniqueessentially prevents the scan chains from capturing X states and loadingthem into the compactor 3110. In the example of FIG. 31, approximately75% of scan chains have their clocks disabled during capture (that is,they do not record test results (including X states)), while theremaining 25% of the scan chains have their clocks enabled duringcapture and capture the test responses.

The exemplary approach explained with reference to FIG. 31 can becombined with the approach illustrated and described in connection withFIG. 30. As a result, the same control circuitry can be shared tohandle, in parallel, power dissipation and the presence of unknownstates.

An exemplary technique for generating control data for the clock enablecircuit that prevents X states from being captured comprises simulatinga test pattern being applied to a circuit-under-test to generate asimulated test response; identifying one or more scan chains of thecircuit-under-test that capture unknown states from the simulated testresponse; and generating control signals that cause the clock enablecircuit to suppress the capture clock of one or more of the identifiedscan chains during the capture window. The control signals that aregenerated can be stored on one or more computer-readable media andsubsequently loaded into the programmable controller of the clock enablecircuit during test application.

VII. Low-Power Scan Shift Operations with Reset/Shift Clock Enablers

Since flip-flops are usually designed with one or more asynchronouscontrol inputs intended for state initialization (e.g., an asynchronousset input or an asynchronous reset input), it is possible to reducetoggling during the scan shift phase by using a programmable signal e.g.that forces the scan cells into a known state through one of theseasynchronous control inputs (e.g., an asynchronous set signal or anasynchronous reset signal). One exemplary architecture 3200 forimplementing this approach is shown in FIG. 32. Implementations of thedisclosed architecture also have the ability to significantly reduceclock wiring power dissipation, another major source of chip powerconsumption. The exemplary architecture uses a programmable controller,which can be implemented using any of the controller designs describedabove.

For the approach illustrated in FIG. 32, it is desirable to determinethe scan chains that should be driven directly by the decompressor whenshifting in a test pattern t_(i) (because they contain specified bits ofthe test pattern t_(i)) and the scan chains that have test responsevalues that should be loaded into the compactor after applying a testpattern t_(i−1) (because they are values that are indicative of thetargeted defects captured by t_(i−1)). The test pattern t_(i) istypically applied right after the test pattern t_(i−1). These scanchains can be identified, for example, during the ATPG process.According to one specific implementation, the scan chains can becontrolled so that only the identified scan chains respond to the shiftclock signal. The other scan chains can remain quiescent as their shiftclock signals are suppressed. As a result, switching activity due toboth scan shifting and clocking itself can be reduced. Furthermore, insome instances, there can be a small number of scan chains that remainactive as a side effect of the encoding process. In general, theparticular configuration of the biasing circuitry will affect thepercentage of unnecessary scan chains that are activated. To avoidunknown values at the quiescent scan chains' outputs, their outputs canbe gated to have a constant value before feeding to the inputs of thecompactor. The gating control signals can come from the programmablecontroller that controls the shift clock signal.

Toggling in the scan chains can be further reduced by taking advantageof the fact that in many cases, the test response values captured incertain scan chains are used to observe fault effects of targeted faultsthat have not been previously detected by earlier test patterns whereasthe test response values captured in other scan chains are used toobserve fault effects of targeted faults that have been previouslydetected by the earlier test patterns. Shifting out the response valuesin the latter subset of scan chains does not ordinarily improve thefault coverage. Accordingly, in certain embodiments, these scan chainscan be reset before a previously captured test response is unloaded andthe next test pattern is loaded in. This causes the scan chain to be setto all constant values before loading the next test pattern, thusreducing the amount of toggling that occurs when the scan chain isloaded with the next test pattern. Resetting a scan chain prior toapplication of a new test vector can reduce the switching activity byhalf (assuming that there is no inversion between adjacent scan cells).

A. Exemplary Architectures of Programmable Shift/Reset Clock Enablers

In the exemplary architecture 3200 of FIG. 32, a programmablereset/shift clock enabler 3210 is inserted between the primary inputpins Reset_Clock 3220 and Shift_Clock 3222, and the reset clock and theshift clock trees driving the scan chains. As shown in FIG. 32, theexemplary programmable reset/shift clock enabler 3200 comprises orconsists of three components: a shift clock enable circuit 3230, a resetenable circuit 3232, and a programmable controller 3240.

An exemplary test application procedure with the exemplary architecture3200 of FIG. 32 comprises loading the control data to control the resetenable of a test pattern t_(i) and the control data to control the shiftclock enable of the next test pattern into a programmable controller;shifting the test stimulus t_(i) into scan chains (the control data tocontrol the shift clock enable of the test pattern t_(i) is loaded whenthe test stimuli for t_(i−1) is shifted in); applying capture clocks;asserting the Reset_Clock pin on selected scan chains and holding it atan active state for as many clock cycles as required; de-assertingReset_Clock pin; and shifting out a test response from the scan chains.

It should be noted that in certain embodiments, the shift clock enablecircuit 3230 is omitted from the design. The test application procedureoutlined above will be modified in such embodiments so that no controldata for the shift clock enabler is used.

FIG. 43 is a flowchart illustrating an exemplary embodiment for applyingreset signals to a circuit during testing. At 4310, a test response to atest pattern (e.g., a test pattern decompressed by a decompressor) iscaptured in scan chains of a circuit-under-test. At 4312, a reset signalis applied to one or more but not all of the scan chains or segments ofthe scan chains after the test response to the test pattern is captured.At 4314, the contents of the scan chains are unloaded after the resetsignal is applied. The one or more scan chains or segments of the scanchains to which the reset signal is applied can comprise one or morescan chains or segments of the scan chains that would otherwise captureunknown values. The application of the reset signal can cause valuescaptured into the one or more but not all of the scan chains or segmentsof the scan chains to become a single constant value (e.g., a 1 or 0).Control signals can be received that control which scan chains orsegments of the scan chains will have the reset signal applied. Thesecontrol signals can be reused for test responses to multiple additionaltest patterns. Further, control signals for a next test pattern can beloaded as the test pattern is being loaded into the scan chains.

B. Shift Clock Enablers and Reset Enablers

The shift clock enable circuit 3230 can comprise or consist of pluralshift clock enablers. Furthermore, the shift clock enabler can driveeither a single scan chain's shift clock input or a group of two or morescan chains' shift clock inputs. In general, the function of the shiftclock enable circuit 3230 is to enable/disable scan chains to operate ina shift mode during scan shift. An exemplary glitch-free implementation3300 of the shift clock enabler is shown in FIG. 33.

The reset enable circuit 3232 can comprise or consist of a group ofplural reset enablers. The reset enabler can drive either a single scanchain's reset clock input or a group of two or more scan chains' resetclock inputs. The function of the reset enabler is to enable/disableReset_Clock and thereby reset the scan chains when the Reset_Clock isactive. An exemplary implementation 3400 of the reset enabler is shownin FIG. 34.

An exemplary form of the programmable controller 3240 can comprise orconsist of two modules: one to control the shift clock enabler and theother to control the reset enabler. Each controller module can have thesame architecture as the exemplary programmable controllers used withthe programmable test stimulus selector 652 and described previously.

C. Test Pattern Generation

The test pattern generation procedures for architectures having any ofthe reset clock enable circuit or shift clock enable circuits describedherein are substantially similar to the test pattern generationprocedures described above with respect to Tables 5 and 6 for thearchitectures having clock enablers or scan enablers and need not be setforth separately here. For example, the test pattern generationprocedures can be used to generate control data for the controller of areset enable circuit so that the reset enable circuit resets one or morescan chains that do not observe fault effects before their test responseis shifted out.

The exemplary embodiment shown in FIG. 45 and discussed above can alsobe used to generate test patterns for architectures having a resetenable circuit. In such embodiments, reset signals for the reset enablecircuit can be generated based on the generated test cubes. Forinstance, the reset signals can be capable of causing the reset enablecircuit to apply reset signals to scan chains that do not observe faulteffects from the test cube after a test response to a test pattern withthe test cube is captured during testing. The exemplary embodiment shownin FIG. 45 and discussed above can also be used to generate testpatterns for architectures having a shift clock enable circuit (e.g., incombination with the reset enable circuit). In such embodiments, controlsignals for a shift clock enable circuit can be generated based on thetest cubes. These control signals can be capable of causing the shiftclock enable circuit to suppress shift clock signals from scan chainsthat do not observe fault effects from the test cube after a testresponse to a test pattern with the test cube is captured duringtesting.

D. Switching Activity Reduction for Both Scan Shift and Capture

To reduce the switching activity during capture as well as to furtherreduce the switching activity for scan shift, the programmablereset/shift clock 3210 can be used in combination with a programmabletest stimulus selector and a programmable clock enabler as described inany of the previous sections. An exemplary scan architecture 3500 forsuch an implementation is shown in FIG. 35.

An exemplary test application procedure using this implementationcomprises loading the control data to control the reset enable of a testpattern t_(i) and the control data to control the shift enable of thetest pattern t_(i+1) into programmable controller; shifting the teststimulus t_(i) into the scan chains (the programmable test patternselector selects the source of the test pattern during the shifting inof the test stimuli); de-asserting Global_Clock_Enable at the end of ascan shift operation; applying capture clocks (the scan cells that areselected to capture new data are controlled by the programmable clockenabler); asserting the Reset_Clock pin and holding it at an activestate for as many clock cycles as required; de-asserting the Reset_Clockpin; asserting the Global_Clock_Enable signal; and shifting out a testresponse from the scan chains.

In the architecture 3500 shown in FIG. 35, the shift clock and thecapture clock are the same. The architecture of FIG. 35 can be adapted,however, to use different shift and capture clocks. For instance, in ascan shift mode, Global_Clock_Enable can be asserted to 1, and the shiftclock can be controlled by the programmable shift/reset clock enabler.In the capture mode, Global_Clock_Enable can be de-asserted, and thecapture clock can be controlled by the programmable clock enabler. Toreduce the pin count, the pin Global_Clock_Enable can be shared with thepin Scan_Enable.

E. Suppressing Unknown States

The programmable reset enable circuit can be used to prevent X statesfrom being output from the scan chains. For example, a significantnumber of X states that might be otherwise captured and output can beeliminated using programmable reset enablers. In particular, after atest response is captured in the scan chains, the Reset_Clock signal canbe enabled at one or more scan chains that are known to have capturedunknown states but that did not capture test response values indicativeof targeted faults (or that captured test response values that do notsignificantly contribute to the desired test coverage). Consequently,the values in the scan chains will be reset to known constants. As wasthe case with using scan enablers, there is no need to use anycustomized gating logic at the outputs of the scan chains when usingreset enablers to prevent X states from being captured. The desiredfunctionality can be achieved by resetting the desired scan chains afterthe test response is captured. In other words, instead of gating scanchains that carry X states, one can use one or more of the exemplaryreset enable circuits 3232 to reset the captured values in a scan chainto known constants. The programmable reset enabler 3210 can be driven,for instance, by precomputed data (e.g., computed in any of theexemplary manners described in U.S. Patent Application Publication Nos.2007/0234157, 2007/0234163, and 2007/0234169, and G. Mrugalski et al.)).

An exemplary technique for generating control data for the reset enablecircuit that prevents X states from being output comprises simulating atest pattern being applied to a circuit-under-test to generate asimulated test response; identifying one or more scan chains of thecircuit-under-test that capture unknown states from the simulated testresponse; and generating control signals that cause a reset enablecircuit to reset the values in one or more of the identified scan chainsafter the test response having the unknown states is captured. Thecontrol signals that are generated can be stored on one or morecomputer-readable media and subsequently loaded into the programmablecontroller of the reset enable circuit during test application.

VIII. Experimental Results

Scan shift operations dissipate power, which depends directly on thenumber of transitions that occur in the scan chains and other parts ofthe circuit-under-test (“CUT”). The resultant switching activity can beestimated by a weighted transition metric that not only counts thenumber of invoked transitions in successive scan cells, but also takesinto account their relative positions. Let m be the length of a scanchain, and T=b₁b₂ . . . b_(m) represent a test vector with bit b_(k)scanned in before b_(k+1). The normalized form of the metric can then bedefined as follows:

$P = {{2\left\lbrack {m\left( {m - 1} \right)} \right\rbrack}^{- 1}{\sum\limits_{i = 1}^{m - 1}{\left( {m - i} \right)\left( {b_{i} \oplus b_{i + 1}} \right)}}}$The average scan power dissipated during test application can beobtained by summing up results provided by the above formula over allscan chains and all test patterns. An embodiment of the previouslydescribed low power approaches was tested on several industrial designs.

In this section, results for circuits ranging in size from 220K to 10.5M gates, and using the exemplary architecture 3600 of FIG. 36 arepresented. For each design, EDT with different compression levels wasused by fixing the number of scan channels to 8 and utilizing in allcases a 48-bit decompressor. Results of these experiments are summarizedin Table 7. In addition to the number of gates, the followinginformation is given for each circuit: the number of test patternsapplied, the fill rate (the percentage of specified bits), the size ofthe control register (“CR”), the switching rate measured by means of theweighted transition metric assuming that a standard embeddeddeterministic test is employed (column “SDT”), and the switching rateafter using the proposed low power scheme (column “LP”). As can be seen,in all examined cases a substantial reduction in the total number oftransitions is achieved, and hence a significantly reduced switchingrate was observed.

TABLE 7 Experimental results Fill Scan SDT LP Design Gates Tests rate(%) chains CR (%) (%) D1 220K 5378 0.26 100 × 126 32 36.04 6.66 0.26 200× 63  32 34.21 6.99 0.26 400 × 32  32 32.16 5.76 D2 430K 9047 0.24 100 ×285 48 35.52 5.82 0.22 200 × 143 48 40.09 6.18 0.22 400 × 72  48 38.366.09 D3  2.6M 18124 0.10  100 × 1382 48 45.15 11.66 0.10 200 × 691 4845.67 11.74 0.10 400 × 346 48 45.80 11.36 D4 430K 5912 0.34 100 × 285 4835.41 6.78 0.31 200 × 143 48 38.11 6.82 0.29 400 × 72  48 37.57 6.86 D5  10M 21016 0.11  100 × 3085 48 42.34 9.98 0.10  200 × 1543 48 44.9611.45 0.10 400 × 772 48 45.98 11.11IX. Exemplary Computing Environments

Any of the aspects of the technology described above may be performedusing a distributed computer network. FIG. 37 shows one suitableexemplary network. A server computer 3700 can have an associated storagedevice 3702 (internal or external to the server computer). For example,the server computer 3700 can be configured to generate test patterns,test pattern values, or control data according to any of the disclosedmethods or to generate design data for implementing any of the disclosedarchitectures (for example, as part of an EDA software tool, such as atest pattern generation tool). The server computer 3700 can be coupledto a network, shown generally at 3704, which can comprise, for example,a wide-area network, a local-area network, a client-server network, theInternet, or other suitable network. One or more client computers, suchas those shown at 3706, 3708, may be coupled to the network 3704 using anetwork protocol. The work may also be performed on a single, dedicatedworkstation, which has its own memory and one or more CPUs.

FIG. 38 shows another exemplary network. One or more computers 3802communicate via a network 3804 and form a computing environment 3800(for example, a distributed computing environment). Each of thecomputers 3802 in the computing environment 3800 can be used to performat least a portion of the test pattern generation, control datageneration, or test hardware generation process. The network 3804 in theillustrated embodiment is also coupled to one or more client computers3808.

FIG. 39 shows that design information for a circuit-under-test (forexample, an HDL file, netlist, GDSII file, Oasis file, or other suitabledesign file representing the circuit-under-test together with its scanchains) can be analyzed using a remote server computer (such as theserver computer 3700 shown in FIG. 37) or a remote computing environment(such as the computing environment 3800 shown in FIG. 38) in order togenerate test patterns, control data, or test hardware according to anyembodiment of the disclosed technology. At process block 3902, forexample, the client computer sends the integrated circuit designinformation to the remote server or computing environment. In processblock 3904, the integrated circuit design information is received andloaded by the remote server or by respective components of the remotecomputing environment. In process block 3906, test pattern generation,control signal generation, or test hardware generation is performed inorder to implement any of the disclosed embodiments. At process block3908, the remote server or computing environment sends the resultingtest patterns, control signals, or design data storing the generatedtest hardware to the client computer, which receives the data at processblock 3910.

It should be apparent to those skilled in the art that the example shownin Figure 3900 is not the only way to generate test patterns, controldata, or design data for test hardware using multiple computers. Forinstance, the CUT design information may be stored on acomputer-readable medium that is not on a network and that is sentseparately to the server or computing environment (for example, aCD-ROM, DVD, or portable hard drive). Or, the server computer or remotecomputing environment may perform only a portion of the test patterngeneration, control data generation, or test hardware generationprocedures.

Having illustrated and described the principles of the disclosedtechnology, it will be apparent to those skilled in the art that thedisclosed embodiments can be modified in arrangement and detail withoutdeparting from such principles. In view of the many possible embodimentsto which the principles of the disclosed technologies can be applied, itshould be recognized that the illustrated embodiments are only preferredexamples of the technologies and should not be taken as limiting thescope of the invention. Rather, the scope of the invention is defined bythe following claims and their equivalents. We therefore claim as ourinvention all that comes within the scope and spirit of these claims.

1. An integrated circuit, comprising: a decompressor coupled to datainputs of scan chains in the integrated circuit; a controller configuredto generate control signals; and a scan enable circuit, the scan enablecircuit having an input coupled to the controller and outputs coupled toscan enable inputs of scan cells of the scan chains, the scan enablecircuit being configured to generate independently controllable scanenable signals at one or more of the outputs of the scan enable circuit,the values of the independently controllable scan enable signals beingbased at least in part on the control signals from the controller andcausing a plurality of scan cells selected from the scan cells tooperate in a shift mode during a capture window.
 2. The integratedcircuit of claim 1, wherein the values of the independently controllablescan enable signals comprise a first scan enable value and a second scanenable value, the first scan enable value being used to cause one ormore of the scan chains to operate in a shift mode and the second scanenable value being used to cause the one or more of the scan chains tooperate in a normal circuit mode.
 3. The integrated circuit of claim 1,wherein each output of the scan enable circuit is coupled to the scanenable inputs of the scan cells in a respective one or more of the scanchains.
 4. The integrated circuit of claim 1 further comprising a teststimulus selector having outputs that are configured to be coupled toscan chains formed by the scan cells, the test stimulus selector beingconfigured to selectively output either an original test pattern valueor a constant value at each respective one of the outputs of the teststimulus selector.
 5. The integrated circuit of claim 1, wherein thecontroller is a programmable controller configured to load control datafrom one of an external tester, a memory on the integrated circuit, or atest generator on the integrated circuit.
 6. The integrated circuit ofclaim 1, wherein the controller comprises shift registers for loadingand outputting control data, the shift registers forming a multi-stageregister pipeline.
 7. The integrated circuit of claim 6, furthercomprising one or more shadow registers coupled to the one or more shiftregisters.
 8. The integrated circuit of claim 6, wherein the controllerfurther comprises: an XOR or XNOR network coupled to at least one of theshift registers; and a biasing circuit coupled to the XOR or XNORnetwork, the biasing circuit being configured to bias one or more of theoutputs of the XOR or XNOR network so that each of the biased outputs ismore likely to produce a respective binary value.
 9. A computer-readablemedia storing design data for the circuit of claim
 1. 10. Acomputer-readable media storing computer-executable instructions forcausing a computer to create the integrated circuit of claim
 1. 11. Anintegrated circuit, comprising: a decompressor coupled to data inputs ofscan chains in the integrated circuit; a controller configured togenerate control signals; and a clock enable circuit, the clock enablecircuit having inputs coupled to the controller and outputs coupled toclock inputs of scan cells of the scan chains, the clock enable circuitbeing configured to generate independently controllable clock signals atone or more of the outputs of the clock enable circuit based at least inpart on the control signals from the controller such that clock signalsfor a plurality of scan cells selected from the scan cells aresuppressed during a certain period of time.
 12. The integrated circuitof claim 11, wherein the independently controllable clock signalsgenerated by the clock enable circuit are capture clock signals.
 13. Theintegrated circuit of claim 11, wherein each output of the clock enablecircuit is coupled to the clock inputs of the scan cells in a respectiveone or more of the scan chains of the integrated circuit.
 14. Theintegrated circuit of claim 11, wherein the clock enable circuitcomprises individual clock enabler circuits for controlling eachrespective output of the clock enable circuit.
 15. The integratedcircuit of claim 11 further comprising a test stimulus selector havingoutputs that are configured to be coupled to scan chains formed by thescan cells, the test stimulus selector being configured to selectivelyoutput either an original test pattern value or a constant value at eachrespective one of the outputs of the test stimulus selector.
 16. Theintegrated circuit of claim 11, wherein the controller is a programmablecontroller configured to load control data from one of an externaltester, a memory on the integrated circuit, or a test generator on theintegrated circuit.
 17. The integrated circuit of claim 11, wherein thecontroller comprises shift registers for loading and outputting controldata, the shift registers forming a multi-stage register pipeline. 18.The integrated circuit of claim 17, further comprising one or moreshadow registers coupled to the one or more shift registers.
 19. Theintegrated circuit of claim 17, wherein the controller furthercomprises: an XOR or XNOR network coupled to at least one of the shiftregisters; and a biasing circuit coupled to the XOR or XNOR network, thebiasing circuit being configured to bias one or more of the outputs ofthe XOR or XNOR network so that each of the biased outputs is morelikely to produce a respective binary value.
 20. An integrated circuit,comprising: a decompressor coupled to data inputs of scan chains in theintegrated circuit; a controller configured to generate control signals;and a reset enable circuit, the reset enable circuit having inputscoupled to the controller and outputs that are coupled to reset inputsof scan cells of the scan chains, the reset enable circuit beingconfigured to selectively generate a reset signal at one or more of theoutputs of the reset enable circuit based at least in part on thecontrol signals from the controller such that a plurality of scan cellsselected from the scan cells are reset.
 21. The integrated circuit ofclaim 20, wherein the scan cells in the integrated circuit areconfigured to be reset to 0 or 1 when the reset signal is applied to thereset inputs.
 22. The integrated circuit of claim 20, wherein the resetenable circuit comprises individual reset enabler circuits forcontrolling each respective output of the reset enable circuit.
 23. Theintegrated circuit of claim 20, wherein each output of the reset enablecircuit is coupled to the reset inputs of the scan cells in a respectiveone or more scan chains of the integrated circuit.
 24. The integratedcircuit of claim 20, wherein the reset inputs of the scan cells compriseasynchronous control pins of the scan cells.
 25. The integrated circuitof claim 20, further comprising a shift clock enable circuit, the shiftclock enable circuit having outputs that are coupled to shift clockinputs of scan chains in the integrated circuit, the shift clock enablecircuit being configured to selectively generate a shift clock signal atone or more of the outputs of the shift clock enable circuit.
 26. Theintegrated circuit of claim 25, wherein the shift clock enable circuitfurther comprises inputs coupled to the controller, and wherein theshift clock signals that are selectively generated are based at least inpart on the control signals from the controller.
 27. The integratedcircuit of claim 20 further comprising a test stimulus selector havingoutputs that are configured to be coupled to scan chains formed by thescan cells, the test stimulus selector being configured to selectivelyoutput either an original test pattern value or a constant value at eachrespective one of the outputs of the test stimulus selector.
 28. Theintegrated circuit of claim 20, wherein the controller is a programmablecontroller configured to load control data from one of an externaltester, a memory on the integrated circuit, or a test generator on theintegrated circuit.
 29. The integrated circuit of claim 20, wherein thecontroller comprises shift registers for loading and outputting controldata, the shift registers forming a multi-stage register pipeline. 30.The integrated circuit of claim 29, further comprising one or moreshadow registers coupled to the one or more shift registers.
 31. Theintegrated circuit of claim 29, wherein the controller furthercomprises: an XOR or XNOR network coupled to at least one of the shiftregisters; and a biasing circuit coupled to the XOR or XNOR network, thebiasing circuit being configured to bias one or more of the outputs ofthe XOR or XNOR network so that each of the biased outputs is morelikely to produce a respective binary value.